Névjegyzék

Mi több, vagy c. Kapcsolati operátorok és logikai szereplők. Egész számítási műveletek

Mivel az előző cikkben először logikus műveletet használtam, megmondom, hogy mit jelentenek, hány és hogyan használják őket.

A C ++ -ban három logikai művelet létezik:

  1. Logikai művelet és &&, már ismertek;
  2. Logikai művelet vagy || ;
  3. Logikai művelet NE. ! vagy logikai megtagadás.

A logikai műveletek komplex (összetett) állapotot alkotnak több egyszerű (két vagy több) körülménytől. Ezek a műveletek egyszerűsítik a szerkezetet szoftverkód többször. Igen, te is teheted őket, de akkor az IFO-k száma többször is növekszik, az állapottól függően. Az alábbi táblázat röviden leírta a C ++ programozási nyelv összes logikai műveletét logikai feltételek kiépítéséhez.

Most meg kell értened a különbséget logikai működés És és egy logikai műveletet, vagy nem szabad összetéveszteni a jövőben. Itt az ideje, hogy megismerjék az adattípust Bool -Logika. Ez a típus Az adatok két értéket vehetnek igénybe: igaz (igazság) és hamis. A kiválasztási operátorokban ellenőrzött állapot bool adattípusú. Tekintsük a következő program működésének elvét, és mindent meg fognak érteni mindezen logikai műveletekkel.

// or_and_not.cpp: Meghatározza a konzol alkalmazás beviteli pontját. #INCHUTE "STDAFX.H" #INCLUDE Névtér STD használatával; INT Main (INT ARRGC, CHAN * ARGV) (Bool A1 \u003d TRUE, A2 \u003d FALSE; // A logikai változók bejelentése Bool A3 \u003d TRUE, A4 \u003d FALSE; COUT<< "Tablica istinnosti log operacii &&" << endl; cout << "true && false: " << (a1 && a2) << endl // логическое И << "false && true: " << (a2 && a1) << endl << "true && true: " << (a1 && a3) << endl << "false && false: " << (a2 && a4) << endl; cout << "Tablica istinnosti log operacii ||" << endl; cout << "true || false: " << (a1 || a2) << endl // логическое ИЛИ << "false || true: " << (a2 || a1) << endl << "true || true: " << (a1 || a3) << endl << "false || false: " << (a2 || a4) << endl; cout << "Tablica istinnosti log operacii !" << endl; cout << "!true: " << (! a1) << endl // логическое НЕ << "!false: "<< (! a2) << endl; system("pause"); return 0; }

9. és 10. sor Meg kell érteni, mivel a változók típusa inicializálva van itt. Bool . És minden változó hozzárendeli az értéket Igaz vagy hamis. Elején 9. sor És befejeződés 20-y.A logikai műveletek használata látható. A program eredménye (lásd az 1. ábrát).

Tablica Istinnosti Log Operacii & & True && FALSE: 0 FALSE && TRUE: 0 TRUE & & A TRUE: 1 FALSE && FALSE: 0 TABLE ISTINNOSTI LOGPERAII || Igaz || FALSE: 1 FALSE || Igaz: 1 igaz || Igaz: 1 hamis || FALSE: 0 TABLICE ISTINNOSTI LOG Operacii! TRUE: 0! FALSE: 1 A folytatáshoz nyomja meg bármelyik gombot. . .

1. ábra - logikai műveletek C ++

Valószínűleg van egy kérdésed, hogy "Melyek ezek a tesztelők és egységek?". Ha van kérdés, akkor válaszolni kell. Azt felelem: „Nolik egy ábrázolása a logikai értéke False (hazugság), de az egységek logikai igaz (az igazság).” Röviden magyarázza meg néhány pillanatot. Vegyes állapot logikus alkalmazásával ÉS Csak akkor igaz, ha mindkét egyszerű feltétel igaz. Minden más esetben az összetett állapot hamis. Összetett állapot logikus vagy hamis, ha hamis, mindkét egyszerű feltétel. Minden más esetben az összetett állapot igaz. Logikai megtagadás NEM UNARY művelet, és nem ötvözi a két körülményt, ellentétben a logikai műveletekkel ÉS és VAGYamelyek bináris műveletek. A logikai megtagadás lehetővé teszi, hogy megfordítsa az állapot jelentését, hogy bizonyos esetekben nagyon kényelmes. A logikai megtagadás feltétele igaz, ha ugyanaz a feltétel hamis, negatív, és fordítva.

A szövegben bármilyen természetes nyelven négy fő elemet választhat: szimbólumok, szavak, kifejezések és javaslatok. Az algoritmikus nyelv is tartalmaz ilyen elemeket, csak a szavakat nevezzük lexemesnek (elemi struktúráknak), kifejezések - kifejezések, ajánlatok - operátorok. A lexemek szimbólumokból, lexemesekből és szimbólumokból származó kifejezésekből, kifejezésekről és lexing szimbólumokból származnak (1.1 ábra)

Ábra. 1.1. Az algoritmikus nyelv összetétele

Így az algoritmikus nyelv elemei:

1) Ábécé nyelv C ++, ami magában foglalja

- tőke és kisbetűs latin betűk és aláhúzott jel;

- arab számok 0 és 9 között;

- Speciális jelek "(), | () + - /% *. \\ ':; &?<>=!#^

- Blind szimbólumok (rés, lap szimbólum, átmeneti szimbólumok egy új karakterlánchoz).

2) A nyelvi lexemek a karakterekből származnak:

Azonosító - A C-program objektumok neve. Az azonosítóban latin betűk, számok és aláhúzott jelek használhatók. A tőke és a kisbetűk eltérnek, például a prog1, a prog1 és a prog1 három különböző azonosítók. Az első karakternek a levél vagy aláhúzás (de nem egy szám). Az azonosítók teremei nem megengedettek.

Kulcs (fenntartva) A szavak olyan szavak, amelyek különleges értékkel rendelkeznek a fordító számára. Nem használhatók azonosítóként.

- A műveletek jelei egy vagy több karakter, amely meghatározza az operandusokat. A műveletek UNARY, BINARY és TERNAR-ba vannak osztva az ebben a műveletben részt vevő operandusok számában.

Állandó- Ezek változhatatlan értékek. Vannak egész szám, igazi, szimbolikus és string konstansok. A fordító kiemeli az állandó lexeme (elemi design), és a megjelenés szerint az egyik típusra vonatkozik.

Osztók - zárójelek, pont, vessző tér ikonok.

A C ++ konstansok

Állandó - Ez egy rögzített numerikus, string vagy szimbolikus érték képét ábrázoló lexeme.

A konstansok 5 csoportra oszthatók:

- valódi (lebegőpont);

- listázott;

- szimbolikus;

- Húr.

A fordító kiválasztja a LEX-t, és egy adott csoportba kapcsolja, majd a csoport belsejében a program szövegében és numerikus értékben szereplő felvételi formájában egy adott típusú.

A konstansok decimális, oktális és hexadecimális lehetnek. A decimális konstans a decimális számjegyek sorozatának definiálása, amely nem 0-tól kezdődik, ha ez nem 0 (példák: 8, 0, 192345). Az oktális konstans egy állandó, amely mindig 0. 0-ban kezdődik 0-ban az oktális számok (példák: 016 - Decimális érték 14, 01). A HEX-állandók a 0x vagy 0x karaktert megelőző hexadecimális számok sorozata (példák: 0Ha, 0x00F).

Az egész konstans értékétől függően a fordító különböző módon jeleníti meg a számítógép memóriájának (azaz a fordítónak a megfelelő adattípus-állandó).

A valódi konstansok a számítógép memóriájában egy másik belső prezentációt tartalmaznak. A fordító elismeri az ilyen konstansokat az elme szerint. A valódi állandóknak két formája lehet: rögzített pont és lebegőponttal. Rögzített pont Állandó nézet: [Figures]. [Ábrák] (Példák: 5.7, .0001, 41.). A lebegőpontos tartalom állandó: [Figurák] [.] [Ábra] E | E [+ | -] [számok ] (Példák: 0,5E5, .11E-5, 5E3). A valós konstansok, egész, egész, frakcionált rész, vagy tizedespont, vagy az exponenciális jelek jelzése a mértékben leengedhető.

A felsorolt \u200b\u200bkonstansok az enum kulcsszavával kerülnek beírásra. Ezek közös teljes állandók, amelyek egyedülállóak és kényelmesek a kijelölés használatához. Példák: enum (1 \u003d 1, kettő \u003d 2, három \u003d 3, négy \u003d 4);

enum (nulla, egy, kettő, három) - Ha a felsorolt \u200b\u200bkonstansok meghatározásában elhagyja a jeleket \u003d és a numerikus értékeket, akkor az értékek az alapértelmezettnek tulajdoníthatók. Ebben az esetben a bal oldali azonosító 0 értéket kap, és minden későbbi fog növekedni 1.

enum (tíz \u003d 10, három \u003d 3, négy, öt, hat);

enum (vasárnap, hétfő, kedd, szerda, csütörtök, péntek, szombat);

A szimbolikus állandók egy vagy két, az aposztrófban található karakter. Szimbolikus konstansok, amely egy szimbólum egy fajta char és elfoglalják egy byte memória, karakter konstansok amely két karakter típus int, és elfoglalják a két bájt. A jelzéssel kezdődő szekvenciákat vezetőknek nevezik, használják őket:

- olyan karakterek megjelenítéséhez, amelyek nem rendelkeznek grafikus kijelzővel, például:

\\ A - Beep,

B - Visszatérés egy lépést,

\\ n - sorfordítás,

T - Vízszintes fül.

- a karakterek bemutatásához: \\ ","? "(\\\\, \\ ', \\', \\").

- a hexadecimális vagy oktális kódokkal (\\ 073, \\ 0xf5) karakterek megjelenítése.

A karakterlánc konstans az idézőjelben lévő karakterek sorrendje. A sorokban a vezérlő karakterek is használhatók. Például: "\\ nnoving string",

"A magas szintű programozás algoritmikus nyelvei \\" ".

Adatok típusai a C ++ -ban

Az adatok a világ minden táján jelennek meg. A program célja az adatok feldolgozása. Az adatokat különböző típusúak tárolják és feldolgozzák különböző módon. Az adattípus meghatározza:

1) az adatok belső ábrázolása a számítógép memóriájában;

2) sok olyan érték, amely az ilyen típusú értékeket veheti igénybe;

3) Az ilyen típusú adatokra alkalmazható műveletek és funkciók.

A feladat követelményeitől függően a programozó kiválasztja a programobjektumok típusát. A C ++ típusok egyszerű és kompozitra oszthatók. Az egyszerű típusok tartalmazzák azokat a típusokat, amelyeket egy érték jellemez. A C ++ -ban 6 egyszerű adattípust definiálunk:

A belső ábrázolást és a szabványtípusok belső ábrázolást és tartományát tartalmazza

rövid (rövid)

hosszú (hosszú)

aláírt (jel)

aláíratlan (nyugtalanított)

Egy típusint.

Az ilyen típusú értékek egész számok.

Az int típusát a szabvány nem határozza meg, de a számítógéptől és a fordítótól függ. 16 bites processzor esetében 2 bájtot rendel hozzá, 32 bites - 4 bájthoz.

Ha a rövid specifikáló előtt áll INT, majd 2 bájt kapnak a számot, és ha a hosszú specifikáló, majd 4 bájt. A memória objektumhoz rendelt számától számított sok érvényes érték, amely egy objektumot kaphat, függ:

rövid int - 2 bájtot foglal el, ezért van egy -32768 .. + 32767;

hosszú int - a 4 byte rangsor, ezért rendelkezik -2 147 483 648 .. + 2 147 483 647

Az INT típus egybeesik a 16 bites PC-k rövid int típusával, és hosszú a 32 bites PC-vel.

Az aláírt és aláírás nélküli módosítók szintén befolyásolják a megengedett értékek halmazát, amelyeket az objektum megtehet:

aláíratlan rövid int - 2 bájtot foglal el, ezért van egy sor 0.65536;

unsigned Long Int - 4 bájt rangsor, ezért van egy sor 0. + 4 294 967 295.

Egy típuschar.

Az ilyen típusú értékek a végleges megrendelt karakterkészlet elemei. Minden karaktert a szimbólumkódnak neveznek. Az 1 bájtos szimbólum méretét adja meg. A karakter típusát aláírt és aláírás nélküli specifikátorokkal lehet használni. Ezekben az aláírt karakter típusban az értékeket a -128 és 127 között tárolhatja. Az aláírás nélküli char típus használata esetén az értékek 0 és 255 között lehetnek. Az ASCII kódot kódolásra használják American Standard Code Foe International Interchange). A 0-tól 31-ig tartó kódok szimbólumai a szolgáltatás, és független érték csak az I / O nyilatkozatokban.

A char típusú értékeket a megadott tartományokból származó számok tárolására is használják.

Egy típuswhar_t.

Úgy tervezték, hogy egy olyan karaktersorozattal dolgozzon, amely kódolható, amely nem elegendő 1 bájt, például az Unicode. Az ilyen típusú méret, mint általában, megfelel a rövid típusnak. Az ilyen típusú karakterláncokat az L: L "String # 1" előtaggal rögzítik.

Egy típusbool

A bool típusát logikusnak nevezik. Az értékei igaz és hamis értékeket vehetnek igénybe. A FALSE FALSE belső formája 0, bármely más érték igazolódik.

Lebegőpontos típusok.

A valós szám belső ábrázolása 2 részből áll: Mantissa és rend. Az IBM-kompatibilis PC-ben az úszó típusának mérete 4 bájtot foglal el, amelyek közül a Mantissa, a 8-as és a 24 - a Mantissa alatti kiürítés alá kerül.

A kettős elfoglaló 8 bájt, a 11 és 52 kibocsátás típusainak értékei a megrendelés és a Mantissa alatt kerülnek kiürítésre. A Mantissa hossza határozza meg a szám pontosságát és a tartomány hosszát.

Ha van egy hosszú specifikátor a kettős típusú név előtt, akkor a bájtokat nagyságrend alatt adják meg.

Egy típusÜres.

A fő típusok magukban foglalják az ilyen típusú void típusát is - üres.

Változók

A C ++ változó egy megnevezett memória terület, amelyben az adatok tárolódnak. A változó neve és értéke. A név a memóriaterületre utal, amelyben az érték tárolása. Használat előtt bármilyen változót le kell írni. Példák:

A leírás leírásának általános nézete:

[Memóriaosztály] típusnév [inicializáló];

A memóriaosztály értéke: Auto, Extern, Static, Register. A memóriaosztály határozza meg a változó élettartamát és terjedelmét. Ha a memóriaosztály nincs kifejezetten, akkor a fordító meghatározza, hogy a hirdetési kontextus alapján határozza meg. Az életidő állandó lehet - a program végrehajtása vagy ideiglenes - a blokk alatt. Hatály - A program szövegének egy része, amelyből feltételezzük a szokásos hozzáférést a változóhoz. Általában a láthatóság hatálya egybeesik az akcióterületen. Ezenkívül az eset, ha a belső blokkban szereplő változó ugyanolyan névvel rendelkezik.

CONST - azt jelzi, hogy ezt a változót nem lehet megváltoztatni (Constant nevű).

Ha leírod, hozzárendelhet egy kezdeti értékváltozót (inicializálás).

Memóriaosztályok:

auto-automatikus helyi változó. Az automatikus specifikátor csak akkor adható meg, ha meghatározza a blokkobjektumok, például a test funkcióban. Ez a változó memória a készülékbe kerül, és kiszabadul, amikor kilép. A blokkon kívül ilyen változók nem léteznek.

az extern globális változó, a program egy másik helyén van (egy másik fájlban vagy a szövegben). Az összes programfájlban rendelkezésre álló változók létrehozására használják.

a statikus statikus változó, csak a fájl határértékeiben létezik, ahol a változót definiálják.

a regiszter hasonló az AUTO-hoz, de a memóriát a processzor regisztereire osztják fel. Ha nincs ilyen lehetőség, a változók automatikusan feldolgozzák.

Int a; // globális változó Void Main () (INT B; // Helyi Változó Külső Int X; // Az X változó máshol van meghatározva máshol statikus Int C; // Helyi statikus változó A \u003d 1; // Globális változó hozzárendelése a; / / / Helyi változó AA \u003d 2; // Helyi változó hozzárendelése :: A \u003d 3; // Globális változó hozzárendelése) INT X \u003d 4; // Definíció és inicializálás X

A példában az A változó az összes blokkon kívül van meghatározva. Az A változó cselekvési területe az egész program, kivéve azokat a sorokat, ahol az A helyi változót használják. A B és C változók - Local, a láthatóságuk területe egy blokk. Élet élettartam: A B alatti memória felszabadul a blokkba való belépéskor (mivel az alapértelmezés szerint az Auto Memory osztály) kiszabadul, amikor kilép. A program működése közben (statikus) változó létezik.

Ha a kezdeti érték meghatározásakor a változókat nem határozzák meg kifejezetten, akkor a fordító a globális és statikus változók visszaállítása. Az automatikus változók nem inicializálva vannak.

A változó neve egyedinek kell lennie a cselekvési területén.

A változó leírása befejezhető, vagy hirdetéseként, vagy meghatározásként. A hirdetés tartalmaz információkat a memóriaosztályról és a változó típusáról, a meghatározás ezen információkkal együtt jelezést ad a memória elosztására. Az extern int x példában; - Hirdetmény és a többi - definíciók.

SI / + műveleti jelek

A műveletek jelei biztosítják a kifejezések kialakulását. A kifejezések operandusokból, műveletek és zárójelek jeleiből állnak. Minden operandus viszont a kifejezés kifejezés vagy privát esete állandó vagy változó.

Unary műveletek

& az operand-cím megszerzése
* Felhívja a címet (tartomány)
unary mínusz, megváltoztatja az aritmetikai operandus jelét
~ az Integer Operandus belső bináris kódja (Bit Denial)
! logikai megtagadás (nem). Mint logikai értékek, 0 - hamis és nem 0 - igazság, az elutasítás 0 lesz 1, a nem nulla szám megtagadása 0.
++ Növelje az egyik:

előtag üzemmód - növeli az operandus használatát,

a Postfix művelet használata után növeli az operandust.

int A \u003d (M ++) + N; // A \u003d 4, m \u003d 2, n \u003d 2

int b \u003d m + (++ n); // A \u003d 3, M \u003d 1, N \u003d 3

— — egy egységenkénti csökkentés:

az előtag üzemeltetése - Használat előtt csökkenti az operandusokat,

a postfix művelet használata után csökkenti az operandust.

mérete. a méret (bájtban) kiszámítása az ilyen típusú objektumhoz, amely operandussal rendelkezik

két formája van

sizeof kifejezés

sizeof (úszó) // 4

sizeof (1.0) // 8, mert az alapértelmezett igazi állandóknak egyfajta kettős

Bináris műveletek.

Adalékanyag:

Sokszorosító:

Shift műveletek (csak az egész operandusok esetében meghatározottak).

Expressziós formátum elteltével:

operand_shel operand operand

Számjegy műveletek:

Összehasonlító műveletek: Az eredmény igaz (nem 0) vagy hamis (0)

Logikai bináris műveletek:

Megbízási műveletek

Stb.

Műveletek formátuma Egyszerű megbízás:

operand1 \u003d operand2

A bal oldali érték (L-érték) olyan kifejezés, amely a memória egyes részével foglalkozik, azaz hozzá lehet adni hozzá. Ez a név a hozzárendelési műveletből történt, mivel a hozzárendelési művelet bal oldala meghatározható, amely a művelet működését a memória területére kell megadni. A változó a megismerő kifejezés különleges esete.

Feltételes működés.

Az UNARY és a bináris műveletekkel ellentétben három operandust használ.

Expression1? Expresszion2: expresszion3;

Az első az expresszió értéke1. Ha igaz, akkor az expresszió értékét kiszámítják, ami az eredmény lesz. Ha az expresszió kiszámításakor1 kimutatja a 0-at, akkor az expressziós értéket ennek eredményeként végezzük.

Például:

x.<0 ? -x: x ; //вычисляется абсолютное значение x.

Kifejezett (konverzió) típusú típus működése.

Két forma van: kanonikus és funkcionális:

1) (név) operandus

2) TÍPUS_NAME (Operand)

(int) A // Canonical Form

int (a) // funkcionális forma

Kifejezések

A konstansoktól, változóktól, elválasztóktól és műveletek műveleteitől kifejezést tervezhetnek. Minden kifejezés egy új érték kiszámításának szabálya .. Ha az expresszió egész számot vagy valós számot generál, akkor aritmetikainak nevezik. Egy pár aritmetikai kifejezés, összehasonlító műveletekkel kombinálva, hozzáállásnak nevezik. Ha az arány nem nulla értékű, akkor igaz, ellenkező esetben - hamis.

A műveletek prioritásai a kifejezésekben

Rang Tevékenységek
1 () -> .
2 ! ~ - ++ - & * (típus) sizeof típus ()
3 * /% (multiplikatív bináris)
+ - (adalék bináris)
5 << >\u003e (Bonnezisztens váltás)
6 < > <= >\u003d (Kapcsolat)
7 \u003d\u003d! \u003d (Kapcsolat)
8 & (Bonding Concomction "és")
9 ^ (Ábra kizárva "vagy")
10 | (DiJunction "vagy")
11 && (együtt "és")
12 || (diszjunkció "vagy")
13 ?: (feltételes működés)
14 = *= /= %= -= &= ^= |= <<= >\u003e \u003d (hozzárendelési művelet)
15 , (vessző művelet)

Utolsó frissítés: 06/19/2017

Különféle műveletek a feltételes kifejezések. Az ilyen műveletek visszaadnak logikai értéket, vagyis a Bool típusának értéke: Igaz, ha a kifejezés valóban, és hamis, ha a kifejezés hamis. Az ilyen műveletek közé tartoznak az összehasonlítás és a logikai műveletek.

Az összehasonlítás műveletei

Az összehasonlító műveleteknél két operandust hasonlítunk össze, és a típusú bool értéke igaz, ha a kifejezés igaz, és hamis, ha a kifejezés helytelen.

    Hasonlítsa össze az egyenlőség két operandját. Ha egyenlőek, akkor a művelet igaz, ha nem egyenlő, akkor a FALSE visszatért:

    B; // Hamis

    Hasonlítsa össze a két operandust, és igazolja, ha az operandusok nem egyenlőek, és hamis, ha egyenlőek.

    Int a \u003d 10; int b \u003d 4; Bool c \u003d a! \u003d B; // True Bool D \u003d a! \u003d 10; // Hamis

    "Kevesebb, mint". Visszatér, ha az első operand kisebb, mint a második, és hamis, ha az első operand nagyobb, mint a második:

    Int A \u003d 10; int b \u003d 4; Bool c \u003d a< b; // false

    "Több mint" működés. Hasonlítsa össze a két operandust, és adja meg az igazat, ha az első operand több mint a második, ellenkező esetben hamis:

    Int A \u003d 10; int b \u003d 4; Bool c \u003d a\u003e b; // True Bool D \u003d A\u003e 25; // Hamis

    "Kevesebb vagy egyenlő". Összehasonlítja két operandust, és igaz, ha az első operand kisebb vagy egyenlő a második. Ellenkező esetben hamis.

    Int A \u003d 10; int b \u003d 4; Bool c \u003d a<= b; // false bool d = a <= 25; // true

    "Nagyobb vagy egyenlő." Hasonlítsa össze a két operandust, és adja meg az igazságot, ha az első operand nagyobb vagy egyenlő a második, ellenkező esetben hamis:

    Int A \u003d 10; int b \u003d 4; Bool c \u003d a\u003e \u003d b; // True Bool D \u003d a\u003e \u003d 25; // Hamis

Tevékenységek<, > <=, >\u003d nagyobb prioritást élvez, mint a \u003d\u003d és! \u003d.

Logikai műveletek

A C # által meghatározott logikai operátorok is, amelyek szintén visszaadják a bool típusát. Mint operandok, a bool értéke. Rendszerként alkalmazzák a kapcsolatokra és kombináljunk több összehasonlító műveletet.

    Logikai kiegészítés vagy logikai vagy. Visszatér, ha az operandok legalább egyike igaz.

    Bool X1 \u003d (5\u003e 6) | (négy< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается true bool x2 = (5 > 6) | (4\u003e 6); // 5\u003e 6 - FALSE, 4\u003e

    Logikai szorzás vagy logikai I. Működése I. TRUE, ha mindkét operand egyidejűleg egyenlő az igaznak.

    Bool x1 \u003d (5\u003e 6) & (4< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается false bool x2 = (5 < 6) & (4 < 6); // 5 < 6 - true, 4 < 6 - true, поэтому возвращается true

    Logikai kiegészítés működése. Visszatér, ha az operandok legalább egyike igaz.

    Bool x1 \u003d (5\u003e 6) || (négy< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается true bool x2 = (5 > 6) || || (4\u003e 6); // 5\u003e 6 - FALSE, 4\u003e 6 \u200b\u200b- FALSE, THA hamis hozamok

    Logikai szorzás működése. Visszatér, ha mindkét operand egyidejűleg igaz.

    Bool x1 \u003d (5\u003e 6) && (4< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается false bool x2 = (5 < 6) && (4 < 6); // 5 < 6 - true, 4 < 6 - true, поэтому возвращается true

    Logikai megtagadás működése. Ez egy operand felett van, és igaz, ha az operand hamis. Ha az operand igaz, akkor a művelet hamis:

    Bool a \u003d igaz; Bool b \u003d! A; // Hamis

    Művelet kizárva vagy. Visszatér, ha az első vagy a második operand (de nem egyszerre) igaz, egyébként hamis

    Bool x5 \u003d (5\u003e 6) ^ (4< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается true bool x6 = (50 > 6) ^ (4 / 2 < 3); // 50 > 6 - igaz, 4/2< 3 - true, поэтому возвращается false

Itt két pár művelet van és || (Amellett, hogy & &&) hasonló műveleteket végeznek, de ezek nem egyenértékűek.

A z \u003d x | y expresszióban; Mindkét érték kiszámításra kerül - x és y.

A z \u003d x || y expresszióban; Először az x értékét először kiszámítják, és ha igaz, akkor az Y értékének kiszámítása nem értelme, mivel minden esetben a Z egyenlő az igaznak. Az Y érték csak akkor kerül kiszámításra, ha az X FALSE-vel egyenlő

Ugyanez vonatkozik a műveletek és / &&. A Z \u003d X expresszióban mindkét érték kiszámításra kerül - x és y.

A Z \u003d X expresszióban és először kiszámításra kerül, és ha megegyezik a FALSE-vel, az Y értékének kiszámítása nem értelme, mivel a Z minden esetben hamis lesz. Y értéket csak akkor kell kiszámítani, ha az x igaz

Ezért a műveletek || és && kényelmesebb a számításokban, mivel lehetővé teszi, hogy csökkentse a kifejezés értékének kiszámításának idejét, és ezáltal növelje a termelékenységet. És műveletek és és jobban megfelelnek az ajánlattételi műveletek számának végrehajtásához.

Kapcsolatkezelők és logikai szereplők

A jelölésben a kapcsolat üzemeltetője és logikai üzemeltető kifejezés kapcsolatok azt jelenti, hogy a két érték és a kifejezés közötti kapcsolat logikus - az "igazság" és a "hazugság" logikai értékei közötti kapcsolat. És mivel a kapcsolat üzemeltetői igaz vagy hamis eredményeket adnak, gyakran használják a logikai üzemeltetőkkel együtt. Ezért van, hogy közösen fontolóra kerülnek.

Az alábbiakban a kapcsolati operátorok:

A logikai az alábbi operátorok:

A kapcsolat vagy a logikai kezelő üzemeltetőjének végrehajtásának eredménye a bool típus logikai értéke.

Általában az objektumok összehasonlíthatók az egyenlőséggel vagy az egyenlőtlenséggel a kapcsolati operátorok használatával \u003d\u003d és! \u003d. És az összehasonlító operátorok, \u003d csak a megrendelési arányt támogató adattípusokra használhatók. Következésképpen a relációs üzemeltetők alkalmazhatók minden numerikus adattípusra. De a bool típusértékeket csak az egyenlőséggel vagy az egyenlőtlenséggel lehet összehasonlítani, mivel az igaz (igaz) és a hamis (hamis) értékek nem kerülnek megrendelésre. Például az igaz\u003e hamis a C # -ben való összehasonlítása nem értelme.

Tekintsünk egy példát egy olyan programra, amely bemutatja a kapcsolatok és a logikai szereplők használatát:

Rendszer használata; System.Collections.Genic használata; A system.linq használata; A System.Text használatával; NévterePace ClearEplication1 (String Args (string void d \u003d 10, f \u003d 12, bool var1 \u003d true, var2 \u003d false, ha (df) konzol.Writeline ("d\u003e f"); // & Var2) konzol.Writeline ("Ez a szöveg nem fog letiltani"); ha (! (VAR1 & var2)) konzol.Writeline ("! (VAR1 & var2) \u003d igaz"); ha (var1 | var2) konzol.Writeline ("var1 | var2 \u003d true"); ha (var1 ^ var2) konzol.Writeline ("var1 ^ var2 \u003d true"); konzol.readline ();))))

A C # logikai operátorok végzik a leggyakoribb logikai műveleteket. Mindazonáltal számos művelet van a hivatalos logika szabályai. Ezek a logikai műveletek logikai operátorok segítségével épülnek fel a C #-ban. Következésképpen, C #, van olyan halmaz logikai operátorok, ami elegendő ahhoz, hogy építeni szinte bármilyen logikai művelet, beleértve a következmények. Ampláció - Ez egy bináris működés, amelynek eredménye csak hamis érték, ha a baloldali operandusnak valódi jelentése van, és a megfelelő a hamis. (A következményi művelet a következő elveket tükrözi: az igazság nem jelent hazugságot.)

A végrehajtási művelet a logikai operátorok kombinációja alapján épülhet fel! és |:

Rövidített logikai operátorok

C # is különleges, rövidülés, Logikai operátorok opciói és vagy a hatékonyabb kód megszerzésére szolgálnak. Magyarázzuk meg a következő példákat a logikai műveletekről. Ha egy logikai művelet első operandusa, és hamis értéke (FALSE), akkor az eredménye hamis értékkel rendelkezik, függetlenül a második operand értékétől. Ha az első operandus logikai művelet vagy egy valódi érték (true), akkor annak eredménye lesz a valódi értéke értékétől függetlenül a második operandus. Az a tény, hogy a második operandus értékét ezekben a műveletekben nem kell kiszámítani, időt takarít meg és növeli a kód hatékonyságát.

Egy rövidített logikai művelet, és használatos operátor &&, és egy rövidített logikai művelet vagy - a Üzemeltető ||. Ezek a rövidített logikai operátorok megfelelnek a rendes logikai operátoroknak és |. Az egyetlen különbség a rövidített logikai üzemeltető között a szokásos rejlik abban a tényben, hogy második operandját csak szükség szerint számítják ki.

A nyelv bármely kifejezése operandusok (változók, állandók stb.) A műveletek jelei által összekapcsoltak. A műveleti jel olyan szimbólum vagy csoportcsoport, amely a fordítót jelzi, hogy bizonyos aritmetikai, logikai vagy egyéb cselekvések végrehajtásának szükségességét jelenti.

A műveleteket szigorú szekvenciában végzik. Az adott művelet elvégzéséhez szükséges preemptati jogot meghatározó érték elsőbbséget élvez. A lapon. 2 Az SI (C) nyelv különböző műveletei. Az egyes csoportok prioritásaik megegyeznek (a csoportok szín szerint vannak kiemelve). Minél nagyobb előny A megfelelő műveletek csoportja, annál nagyobb az asztalnál. A műveletek végrehajtására vonatkozó eljárás zárójelben szabályozható.

2. táblázat - Műveletek

Művelet jele

A művelet célja

Hívás funkció

A tömb elemének elosztása

A belépő elem kiválasztása

A belépő elem kiválasztása

Logikai megtagadás

Digitális tagadás

Jelzés megváltoztatása

Egyenkénti egység

Csökkentés egységgel

A cím bevétele

Fellebbezni a címre

Írja be a konverziót (azaz (lebeg) a)

Méret meghatározása a bájtokban

Szorzás

Az egyensúly meghatározása

Kiegészítés

Kivonás

Eltolódás balra

Jobbra vált

Kevesebb, mint

Kevesebb vagy egyenlő

Több mint

Több vagy egyenlő

Hitel logikai "és"

Számjegy kizárva "vagy"

Hitel logikai "vagy"

Logikus "és"

Logikus "vagy"

Feltételes (Ternar) működés

Feladat

+=, - =, *=, /=, %=, <<=,
>>=, &=, |=, ^=

Bináris műveletek (például a * \u003d b
(azaz a \u003d a * b) stb.)

Vessző

Operátor Si (C)

A "Működés" és az "Üzemeltető" fogalmaiban való zavart kizárása megjegyezzük, hogy az üzemeltető a program legkisebb végrehajtható egysége. Az expressziós operátorok megkülönböztetik, amelynek hatása a meghatározott kifejezések kiszámításához áll (például: A \u003d SIN (B) + C; J ++; . Az operátor végére az SI (C) nyelven, egy pontot használnak. Ami az összetett operátor (vagy blokk), amely egy sor logikailag összefüggő szereplők között elhelyezett nyíláson (() és a záró ()) zárójelek ( „üzemeltető zárójelben”), akkor a pontot egy vessző nem hozott. Ne feledje, hogy a blokk különbözik a kompozit üzemeltetőtől a blokk testében lévő definíciók jelenlétével.

Az SI nyelv fő működésének jellemzői (C)

Az SI (C) nyelv alapvető műveleteit jellemzik.

Értékadó művelet

Először is, fontolja meg az egyiket - a hozzárendelési művelet (\u003d). A típus kifejezése

az Y változó változó x értékét hozzárendeli. Működés "\u003d" Többször használható egy kifejezésben, például:

x \u003d y \u003d z \u003d 100;

Megkülönböztetni az UNARY és a BINARY műveleteket. Ezek közül az első, egy operand és a második - kettő. Kezdjük megfontolásukat a következő hagyományos csoportok közül az első műveletektől:

Aritmetikai műveletek.

Logikai műveletek és kapcsolatok kapcsolatok.

Műveletek bitekkel.

Az aritmetikai műveleteket a következő szimbólumok határozzák meg (2. táblázat): +, -, *, /,%. Az utolsó nem alkalmazható a valós típus változójára. Például:

a \u003d B + C;
x \u003d y - z;
R \u003d t * v;
s \u003d k / l;
P \u003d q% w;

Logikai műveletek

A logikai kapcsolat műveleteit a következő szimbólumok határozzák meg (lásd a 2. táblázatot): && ("és"), || ("Vagy"),! ("Nem"),\u003e,\u003e \u003d,<, <= , = = (равно), != (не равно). Традиционно эти операции должны давать одно из двух значений: истину или ложь. В языке СИ (C)принято следующее правило: истина - это любое ненулевое значение; ложь - это нулевое значение. Выражения, использующие логические операции и операции отношения, возвращают 0 для ложного значения и 1 для истинного. Ниже приводится таблица истинности для логических операций.

A bit műveletek alkalmazhatók olyan változókra, amelyek int, char típusúak, valamint változataik (például hosszú int). Nem lehet alkalmazni a változó típusú float, dupla, üreges (vagy összetettebb típusok). Ezeket a műveleteket a következő szimbólumok határozzák meg: ~ (Bonetal Denial),<< (сдвиг влево), >\u003e (A jobbra váltás), & (motorháztető "és"), ^ (bitek kizárva "vagy"), | (Számjegy "vagy").

Példák: Ha A \u003d 0000 1111 és B \u003d 1000 1000, akkor

~ A \u003d 1111 0000,
A.<< 1 = 0001 1110,
A \u003e\u003e 1 \u003d 0000 0111,
A & B \u003d 0000 1000,
a ^ b \u003d 1000 0111,
A | B \u003d 1000 1111.

A nyelv két nem hagyományos növekedési műveletet (++) és csökkenést (-) biztosít. Úgy tervezték, hogy növeljék és csökkentsék az operandus értékét. Működés ++ és - rögzíthető mind az operandus előtt, mind utána. Az első esetben (++ n vagy --n), az operandi érték (N) a megfelelő expresszióban és a második (n ++ vagy n--) használatát megelőzően változik - annak használata után. Tekintsük a program következő két sorát:

a \u003d B + C ++;
A1 \u003d B1 +++ C1;

Tegyük fel, hogy b \u003d b1 \u003d 2, c \u003d c1 \u003d 4. Ezután végrehajtása után: A \u003d 6, B \u003d 2, C \u003d 5, A1 \u003d 7, B1 \u003d 2, C1 \u003d 5.

A másik nem hagyományos ternáris vagy feltételes műveletekkel rendelkező kifejezések széles körben elterjedtek. A képletben

y \u003d a, ha x nem nulla (azaz igaz), és y \u003d b, ha x nulla (hamis). Következő kifejezés

y \u003d (a\u003e b)? A: B;

lehetővé teszi, hogy egy változót hozzárendelhet egy nagyobb változó értékének (A vagy B), azaz y \u003d max (a, b).

A nyelv másik megkülönböztetése az, hogy az A \u003d A + 5 forma expressziója; más formában írható: A + \u003d 5; A jel + helyett más bináris műveletek szimbólumait használhatja (lásd a 2. táblázatot).

Egyéb asztali műveletek. A 2. pontot a következő bekezdésekben ismertetjük.

A ciklusokat olyan üzemeltető vagy operátorcsoport elvégzésére szervezik, bizonyos számú alkalommal. A SI (C) nyelven három ciklusos operátor: mert, míg és tegye - míg. Az elsőnek formálisan íródott, a következő formában:

for (expression_1, expresszion_2, expresszion_3) body_tsikla

A ciklus teste vagy egy operátor, vagy több olyan operátor zárt göndör zárójelben (...) (a blokkpont nem kerül elhelyezésre). Az 1., 2., 3-as kifejezésekben egy speciális változó, amelyet a vezérlésnek neveznek. Értékével meg kell állapítani az ismétlési ciklus szükségességét vagy kilépését.

Expression_1 hozzárendeli a kezdeti értéke a kontroll változó, a expression_s megváltoztatja azt minden egyes lépés, és a 2.Kifejezést ellenőrzi, hogy elérte a határértéket, amely megállapítja, hogy szükség van, hogy kilépjen a ciklust.

(i \u003d 1; i)< 10; i++)

mert (сh \u003d "A"; ch! \u003d "p";) scanf ("% c", & ch);

/ * A ciklus végrehajtásra kerül a billentyűzetig

a "P" szimbólum * /

A ciklusban lévő három kifejezés közül azonban hiányozhat, azonban a vesszővel rendelkező pontnak meg kell maradnia. Így (;;) (...) egy végtelen ciklus, amelyből csak más módon kiléphet.

Az SI (C) nyelven a következő szabályt veszi figyelembe. Bármely, a zárójelben lévő hozzárendelési műveletekkel rendelkező kifejezés egyenlő a hozzárendelt. Például a kifejezés (A \u003d 7 + 2) 9. Ezután írhat egy másik kifejezést, például: ((A \u003d 7 + 2)<10), которое в данном случае будет всегда давать истинное значение. Следующая конструкция:

((Sh \u003d getch ()) \u003d\u003d "i")

lehetővé teszi a CH változó értékét, és csak akkor adja meg az igazi eredményt, ha a megadott érték az "I" betű. A zárójelben számos képletet rögzíthet, amelyek összetett kifejezést alkotnak. E célból a vessző működését használják. A képleteket balról jobbra kell kiszámítani, és az összes kifejezés az utolsó számított képlet értékét veszi figyelembe. Például, ha kétféle típusú karakter van, akkor expresszió

z \u003d (x \u003d y, y \u003d getch ());

meghatározza a következő műveleteket: Az Y változó értékét az X változóhoz hozzárendeli; A billentyűzetből származó szimbólum bevezetésre kerül és az Y változóhoz van hozzárendelve; Z megkapja az Y változó értékét. Itt van szükség a zárójelek, mivel a vessző művelet alacsonyabb prioritást élvez, mint a Z változó után rögzített megbízási művelet. A vessző működését széles körben használják a ciklusos kifejezések kiépítéséhez, és lehetővé teszi, hogy egyidejűleg módosítsa a több vezérlési változó értékeit.

Befektetett szerkezetek megengedettek, vagyis Egyes ciklus testében más üzemeltetők fordulhatnak elő.

A nyilatkozat formálisan íródott ebben a formában:

míg (kifejezés) body_tsikla

A zárójelben lévő kifejezés nem nulla (igaz) vagy nulla (hamis) értéket is igénybe vehet. Ha valóban, a ciklus testét elvégzik, és a kifejezést újra kiszámítják. Ha a kifejezés hamis, akkor a míg ciklus vége.

A do-míg a nyilatkozat formálisan íródott a következőképpen:

do (body_cyklla), míg (kifejezés);

A fő különbség a míg és a ciklusok között, hogy a test a Do - míg a ciklus legalább egyszer történik. A ciklus testét addig végezzük, amíg a zárójelben lévő kifejezés hamis értéket vesz igénybe. Ha a ciklus beírásakor hamis, a teste pontosan egyszer történik.

A mások számára néhány ciklus fészkelője megengedett, azaz Bármely ciklus testében, az üzemeltetők, míg és to - míg - míg - megjelenhetnek.

A ciklus testében új szünet és folytatású üzemeltetők használhatók. A szünetelõszolgáltató azonnali teljesítményt nyújt a ciklusból, a folytonos üzemeltető a következő iteráció következő és kezdete megszűnését okozza.

Feltételes és feltétel nélküli átmeneti szereplők

Az SI (C) program (C) -os (C) program (C) programjának feltételes és feltétel nélküli átmenetének megszervezése: Ha - más, kapcsoló és goto. Az első az alábbiak szerint íródott:

ha (check_linking) operátor_1; Egyéb operátor_2;

Ha a zárójelben lévő állapot a valódi értéket veszi fel, akkor az operátor_1 akkor történik, ha a hamis operátor_2. Ha helyett több szereplőt kell végrehajtania, akkor göndör nadrágtartó. Az IF nyilatkozatban a szó más lehet.

Az IF - egyéb nyilatkozat közvetlenül a Ha, és az egyéb kulcsszavaknak más operátorokat kell követniük. Ha legalább együk van egy, ha operátor, akkor az úgynevezett befektetett. Az SI (C) megállapodásban elfogadott megállapodás szerint a szó más mindig a legközelebbi, ha előtte utal.

A kapcsoló operátor lehetővé teszi, hogy kiválaszthassa az egyik alternatívát. A következő formális formában van írva:

kapcsoló (kifejezés)

cASE CONSTANTA_1: Operátorok_1;

cASE CONSTANTA_2: Operátorok_2;

........ ........

alapértelmezett: operátorok_default;

Itt kiszámolják a zárójelben lévő teljes kifejezés értékét (ez néha választónak nevezik), és összehasonlítja az összes konstans (állandó kifejezés). Minden konstansnak másnak kell lennie. A megfelelés során az üzemeltetők (egy vagy több operátor) megfelelő változata végrehajtásra kerül. A kulcsfontosságú alapértelmezett beállítással végrehajtott lehetőség, ha nincs más megközelítés (az alapértelmezett szó hiányozhat). Ha az alapértelmezés hiányzik, és az összehasonlítás összes eredménye negatív, akkor nincs lehetőség.

A nyomon követési ellenőrzések leállítása Egy bizonyos opció sikeres választása után a Break operátor használatát használja, és azonnali kimenetet biztosít a kapcsolókapcsolóból.

Befektetett kapcsolási tervek.

Tekintsük a feltétel nélküli átmenet elvégzésére vonatkozó szabályokat, amelyek a következő formában lehet benyújtani:

goto címke;

A címke bármely azonosító, amely után a vastagbél szállítása. A GOTO Operátor azt jelzi, hogy a programot folytatni kell az üzemeltetőtől, mielőtt a címkét rögzítik. A címke bármely üzemeltető előtt helyezhető el abban a funkcióban, ahol a GOTO operátor megfelel. Nem kell bejelenteni.

A Turbo Debugger teljes mértékben támogatja az SI (C) kifejezések kifejezések szintaxisát. A kifejezés olyan műveletek, sorok, változók keverékéből áll



Tetszett a cikket? Oszd meg