Expresszió és értelmezése

A C ++ kifejezések az operandusok, műveletek és határolók sorrendje. Az operandusok változók, konstansok vagy más kifejezések. A C ++ -es határolók a [] () <>. ;. * = #, amelyek mindegyike elvégzi a funkcióját. A kifejezés egy vagy több műveletből állhat, és meghatározhatja az információ átformálásának számos elemi lépését. A fordító megjegyzi a kifejezések értelmezésének szigorú rendjét, amelyet az elsőbbségi szabályoknak neveznek. Ez a sorrend megváltoztatható, ha a kifejezés külön részei zárójelbe vannak zárva. Az információ átalakítására szolgáló elemi műveletet a művelet jele adja. A műveletben részt vevő operandusok száma két műveletcsoportra van osztva: unary (egy operandus) és bináris (két operandus). Az elvégzett művelet típusát megkülönböztetik az aritmetikai, a bitenkénti, a logikai, a hozzárendelési, a kapcsolati műveletek stb.

Alapműveletek és prioritásuk

A C ++ nyelv tartalmazza a számítási műveletek (a +), a kivonás (-), a szorzás (*), a megosztás (/) által adott szabványos készleteket, amelyek nem igényelnek külön magyarázatot. A C ++ -ra specifikusak a maradék (%), növekmény (++) és a csökkenés (-) meghatározása. A% műveletet a következő példa magyarázza:

int a = 5, b = 2, c = 0, d;

d = a% b; / * d = 1 az egész részegység fennmaradó része 5/2 * /

d = a% c; / * hibaüzenet osztva 0 * /

Az increment és decrement műveletek növelik vagy csökkentik az operandust 1-gyel. Az ++ és - műveletek csak a változókra vonatkoznak. A felvétel két formája van: előtag, ha az operandus a műveleti jel jobb oldalán helyezkedik el, és a postfix, amikor az operandus a műveleti jel előtt található. Az előtag formában az operandus először növekszik 1-gyel és a növekvő értéket használjuk a kifejezésben. A postfix formában először az operandus értékét veszik fel, és csak ezt követően értékét növekszik 1. Például:

int a = 0, b = 1, c;

c = a ++; / * c értéke 0, és 1 * /

c = ++ a; / * most c = 2, a = 2 * /

Az írási műveletek formája ++ és - kifejezést összetett kifejezésekben fejezzük ki. Nyilvánvaló, hogy nincs különbség a ++ kifejezések között; és ++ a; b--; és -b;

Bitszerű logikai műveletek

A C ++ támogatja a következő bitfolyamú logikai műveleteket:

bitwise logikai AND (AND);

^ bitwise modulo 2 hozzáadása (XOR - exkluzív vagy);

| | bitenkénti logikai OR (OR);

Az eredmény minden bitjét az operandusok bitjeiből határozzuk meg, amint azt a táblázat mutatja. 8.

Az invertáláshoz egy operandus használata szükséges a megjelölés jobb oldalán

Az eredmény az operandus összes bit bitirányú inverziójával jön létre. példák:

int s = 0x53c9, maszk = 0x356c, r_or, r_and, r_xor, r_inv;

r_or = s | maszk; / * r_or = 0x77ed * /

r_and = s&mask; / * r_and = 0x1148 * /

r_xor = s ^ maszk; / * r_xor = 0x66a5 * /

A bitenkénti logikai műveleteket széles körben használják, hogy a maradékot gyorsan eltávolítsák az alá nem írt int operandusok osztódásáról az olyan értékek között, amelyek kettő többszörösek, valamint egy vagy több adott számbit értékének meghatározására.

Például, meghatározzuk a maradék osztódó unsigned int operandus 2, 4, 8, 16 és így tovább. D. Require bitenkénti logikai ÉS művelet az osztalék rendre maszkok 0x01, 0x03, 0h07, 0x0F, 0x1f, és így tovább. D. Más szavakkal, az allokált fiatalabb a szám bitjei, a többi bitet 0-ra állítjuk. Ez a leggyorsabb módja annak, hogy a többi részt lefoglaljuk.

int s = 0x05, maszk = 0x01;

r_or = smask = 0x05 0x01 = 0x01;

Ez a leggyorsabb módja a fennmaradó részek elosztásának.

A C ++ nyelv két bitenkénti eltolási műveletet tartalmaz:

<<- сдвиг влево операнда слева от знака операции на число двоичных разрядов справа от знака операции;

>> - az operandus jobb oldalán a műveleti jel bal oldalán a műveleti jel jobb oldalán található bináris számjegyek számának eltolása.

A meghosszabbított bitek elveszettek és nulla bitek vannak beillesztve.

Az operandusok 1, 2, 3 vagy több számjegyű balról történő eltolása a leggyorsabb módja a 2, 4, 8, ... Például:

half_adr = adr >> 1; / * osztás 2 * /

double_adr = adr <<1; /* умножение на 2*/

Gyakran a váltás műveleteket számok konvertálásakor vagy egész szám létrehozásakor végzik.

Egy korlátozása shift működése az, hogy a bitek száma shift balra operandus megadható csak konstans vagy konstans kifejezésnek, azaz. E. expressziója teljes egészében áll állandók. Ezért a fordító hibaüzeneteket generál a következő esetekben:

int var1, shift = 5;

var1 = var1 >> eltolódás;

Kapcsolódó cikkek