Contacte

Ceea ce este mai mult cu sau c. Operatori de relații și operatori logici. Operațiuni pentru computere întregi

De când în articolul precedent, am folosit pentru prima oară o operațiune logică, vă voi spune ce sunt, câte și cum le folosesc.

În C ++, există trei operații logice:

  1. Operațiunea logică și &&, suntem deja cunoscuți;
  2. Operațiunea logică sau || ;
  3. Operațiunea logică NE. ! sau negare logică.

Operațiile logice formează o condiție complexă (compozită) din mai multe condiții simple (două sau mai multe). Aceste operațiuni simplifică structura cod software. de cateva ori. Da, puteți face fără ele, dar apoi numărul de IFO crește de mai multe ori, în funcție de condiție. Următorul tabel a descris pe scurt toate operațiile logice din limba de programare C ++ pentru a construi condiții logice.

Acum ar trebui să înțelegeți diferența dintre operațiunea logică Și o operațiune logică sau să nu fie confuză în viitor. Este timpul să vă familiarizați cu tipul de date Bool. -Logică. Acest tip Datele pot lua două valori: adevărat (adevăr) și fals. Condiția verificată în operatorii de selecție are un tip de date Bool. Luați în considerare principiul funcționării următorului program și totul va fi înțeles cu toate aceste operații logice.

// or_and_not.cpp: Specifică punctul de intrare pentru aplicația consolei. #Include "stdafx.h" #include Utilizarea spațiului de nume STD; Int principal (int argc, char * argv) (bool a1 \u003d true, a2 \u003d false; // anunțarea variabilelor logice Bool A3 \u003d Adevărat, 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; }

Rândurile 9 și 10 Trebuie să fiți înțeles, deoarece tipul de variabile sunt inițializate aici. Bool. . Și fiecare variabilă i se atribuie valoarea Adevărat sau fals. Incepand cu Al 9-lea rând Și finisaje 20-y.Este afișată utilizarea operațiunilor logice. Rezultatul programului (a se vedea figura 1).

Tablica Istinnosti Log Operacitii && True && Fals: 0 Fals && True: 0 True && True: 1 Fals && Fals: 0 Tablica Istinnosti log Operaciii || Adevărat ||. FALSE: 1 FALSE || Adevărat: 1 adevărat || Adevărat: 1 fals || FALSE: 0 Tablica Istinnosti Log Operaciii! ! TRUE: 0! FALSE: 1 Pentru a continua, apăsați orice tastă. . .

Figura 1 - Operații logice C ++

Probabil, aveți o întrebare: "Care sunt aceste testere și unități?". Dacă există o întrebare, atunci trebuie să răspundeți. Răspund: "Nolik este o reprezentare a valorii logice a FALSE (minciuni), dar unitățile sunt un adevărat logic (adevăr)". Explicați pe scurt câteva momente. Starea compusă utilizând logic ȘI Adevărat numai când ambele condiții simple sunt adevărate. În toate celelalte cazuri, starea compozită este falsă. Starea compusă utilizând logic sau fals numai atunci când sunt false atât condiții simple. În toate celelalte cazuri, starea compozită este adevărată. Negare logică NU este o operație unică și nu combină două condiții, spre deosebire de operațiile logice ȘI și SAUcare sunt operații binare. Denal Logic vă permite să răsturnați sensul condiției care, în unele cazuri, este foarte convenabil. Condiția cu o negare logică este adevărată dacă aceeași condiție este falsă fără negativă și viceversa.

În text în orice limbă naturală, puteți selecta patru elemente principale: simboluri, cuvinte, fraze și sugestii. Limba algoritmică conține, de asemenea, astfel de elemente, doar cuvintele sunt numite lexeme (structuri elementare), fraze - expresii, oferte - operatori. Lexemes sunt formate din simboluri, expresii de la lexmeme și simboluri, operatori de la expresiuni și simboluri de lexare (figura 1.1)

Smochin. 1.1. Compoziția limbajului algoritmic

Astfel, elementele limbajului algoritmic sunt:

1) Alphabet Limbă C ++, care include

- litere latine și litere mici și un semn de subliniere;

- numerele arabe de la 0 la 9;

- semne speciale "(), () + - /% *. \\ ':; &?<>=!#^

- simboluri orb (Gap, simbol tab, simboluri de tranziție la un șir nou).

2) Lexemele lingvistice sunt formate din caractere:

Identificatori - numele obiectelor C-program. Literele, numerele latine și un semn de subliniere pot fi utilizate în identificator. Capitalul și literele mici diferă, de exemplu, Prog1, Prog1 și Prog1 sunt trei identificatori diferiți. Primul caracter ar trebui să fie litera sau subliniere (dar nu o figură). Spațiile din identificatori nu sunt permise.

Cheie (rezervate) Cuvintele sunt cuvinte care au o valoare specială pentru compilator. Ele nu pot fi folosite ca identificatori.

- Semnele de operațiuni sunt una sau mai multe caractere care determină acțiunea pe operanzi. Operațiunile sunt împărțite în numărul unar, binar și ternar în numărul operanilor care participă la această operațiune.

Constantele- Acestea sunt valori imuabile. Există constante întregi, reale, simbolice și de șir. Compilatorul evidențiază constanta ca o lexeme (design elementar) și se referă la unul dintre tipurile în funcție de aspectul său.

Divizoare - paranteze, punct, icoane spațiu virg.

Constante în C ++

Constant - Aceasta este o lexeme reprezentând o imagine a unei valori numerice, șir sau simbolice fixe.

Constantele sunt împărțite în 5 grupe:

- real (punct plutitor);

- enumerate;

- simbolic;

- șir.

Compilatorul selectează un Lex și se leagă la o anumită grupare și apoi în interiorul grupului la un anumit tip pe forma de înregistrare în textul programului și de valoarea numerică.

Constantele pot fi zecimale, octale și hexazecimale. Constanta zecimala este definita ca o secventa de cifre zecimale, care nu incepe de la 0, daca aceasta nu este 0 (exemple: 8, 0, 192345). Constanta octica este o constanta care incepe mereu cu 0. in 0 urmeaza numerele octale (exemple: 016 - Valoarea zecimala 14, 01). Constantele HEX sunt o secvență de numere hexazecimale care preced caracterele 0x sau 0x (exemple: 0ha, 0x00f).

În funcție de valoarea întregii constante, compilatorul îl va prezenta în moduri diferite față de memoria calculatorului (adică compilatorul va apărea constanta de tip de date corespunzătoare).

Constatele reale au o altă formă de prezentare internă în memoria calculatorului. Compilatorul recunoaște astfel de constante în funcție de forma lor. Constantele reale pot avea două forme de forme: cu un punct fix și punct plutitor. Vizualizare constantă a punctului fix: [figuri] [figuri] (exemple: 5.7 ,.0001, 41.). Vedere a unui punct plutitor constant: [figuri] [.] [Figuri] E | E [+ | -] [Cifre ] (Exemple: 0.5E5, .11E-5, 5E3). În înregistrarea constantelor reale, o parte întregi, fie o parte fracționată, fie un punct zecimal sau un semn de exponențiali cu un indicator al măsurii poate fi redus.

Constantele enumerate sunt introduse utilizând cuvântul cheie Enum. Acestea sunt constantele comune comune care sunt unice și convenabile pentru a fi utilizate desemnarea sunt atribuite. Exemple: enum (unul \u003d 1, două \u003d 2, trei \u003d 3, patru \u003d 4);

enum (zero, unul, doi, trei) - dacă în definirea constantelor listate omite semne \u003d și valori numerice, atunci valorile vor fi atribuite implicit. În acest caz, identificatorul de stânga va primi o valoare de 0, iar fiecare ulterior va crește cu 1.

enum (zece \u003d 10, trei \u003d 3, patru, cinci, șase);

enum (duminică, luni, marți, miercuri, joi, vineri, sâmbătă);

Constantele simbolice sunt una sau două personaje închise în apostrofe. Constatele simbolice constând dintr-un singur simbol au un tip de caractere și ocupă un octet în memorie, constantele de caractere formate din două caractere au tipul int și ocupă doi octeți. Secvențele începând cu semnul sunt numite manageri, sunt folosite:

- să reprezinte caractere care nu au un afișaj grafic, de exemplu:

\\ A - beep,

\\ b - returnați un pas,

\\ n - Traducere rând,

\\ T - fila orizontală.

- Pentru prezentarea personajelor: \\, ",? , "(\\\\, \\ ', \\?, \\").

- reprezintă caractere cu coduri hexazecimale sau octale (\\ 073, \\ 0xf5).

Constarea șirului este o secvență de caractere închise în citate. În interiorul rândurilor pot folosi și caracterele de control. De exemplu: "String Nnoving",

"Limbi algoritmice de programare la nivel înalt \\" ".

Tipuri de date în C ++

Datele sunt afișate în programul din întreaga lume. Scopul programului este de a procesa datele. Datele diferite tipuri sunt stocate și procesate în moduri diferite. Tipul de date determină:

1) o reprezentare internă a datelor în memoria calculatorului;

2) o mulțime de valori care pot lua valori de acest tip;

3) Operații și funcții care pot fi aplicate datelor de acest tip.

În funcție de cerințele lucrării, programatorul selectează tipul pentru obiectele programului. Tipurile de C ++ pot fi împărțite în simple și compozite. Tipurile simple includ tipurile care sunt caracterizate printr-o singură valoare. În C ++, sunt definite 6 tipuri de date simple:

Există 4 specificatori de tip care specifică reprezentarea internă și gama de tipuri standard

scurt (scurt)

lung lung)

semnat (semn)

nesemnate (neschimbate)

Un felint.

Valorile de acest tip sunt numere întregi.

Dimensiunea tipului INT nu este determinată de standard, ci depinde de computer și de compilator. Pentru un procesor pe 16 biți, sunt atribuite 2 octeți, pentru octeți de 32 de biți.

Dacă specificatorul scurt este în picioare înainte de int, atunci 2 octeți sunt date numărului și dacă specificul lung, apoi 4 octeți. Din numărul de obiecte atribuite la obiectul de memorie, numeroasele valori valide care pot primi un obiect depind:

scurt int - ocupă 2 octeți, prin urmare, are un interval -32768 .. + 32767;

long Int - Rangurile 4 octeți, prin urmare, are un interval -2 147 483 648 .. + 2 147 483 647

Tipul INT coincide cu tipul INT scurt pe PC-uri pe 16 biți și cu PC-ul pe 32 de biți.

Modificatoarele semnate și nesemnate afectează, de asemenea, setul de valori admise pe care obiectul le poate lua:

nesemnat scurt int - ocupă 2 octeți, prin urmare, are o serie de 0 ..65536;

prin urmare, are 4 octeți nesemnate 4 octeți, are o serie de 0 .. + 4 294 967 295.

Un felchar.

Valorile de acest tip sunt elementele setului final ordonat de caractere. Fiecare caracter este pus în conformitate cu numărul numit cod simbol. Sub dimensiunea simbolului este dat byte de tip 1. Tipul de caractere poate fi utilizat cu specificatori semnați și nesemnați. În aceste tipuri de caractere semnate, puteți stoca valori în intervalul de la -128 la 127. Când utilizați tipul de caractere nesemnate, valorile pot fi în intervalul de la 0 la 255. Codul ASCII este utilizat pentru codificarea ( Cod standard american FOE INTERNATION INTERNATIONAL). Simbolurile cu coduri de la 0 la 31 sunt service și au o valoare independentă numai în declarațiile I / O.

Valorile tipului de caractere sunt, de asemenea, utilizate pentru stocarea numerelor din intervalele specificate.

Un felwchar_t.

Conceput pentru a lucra cu un set de caractere pentru codificarea care nu este suficientă de 1 octet, cum ar fi Unicode. Dimensiunea acestui tip, de regulă, corespunde tipului de scurt. Constantele șirului de acest tip sunt înregistrate cu prefixul L: L "# 1".

Un felbool.

Tipul BOOL este numit logic. Valorile sale pot avea valori adevărate și false. Forma internă de reprezentare falsă este 0, orice altă valoare este interpretată ca fiind adevărată.

Tipuri de puncte plutitoare.

Reprezentarea internă a numărului real constă din 2 părți: Mantissa și ordinea. În PC-ul compatibil IBM, dimensiunea tipului de flotor este ocupată de 4 octeți, dintre care o descărcare este luată sub semnul Mantissa, 8 deversari sub comanda și 24 - sub Mantissa.

Valorile tipurilor de octeți dublu 8 octeți, 11 și 52 de descărcare sunt descărcate sub comandă și, respectiv, Mantissa. Lungimea Mantissa determină acuratețea numărului și lungimea intervalului său.

Dacă există un anumit specific în fața numelui de tip dublu, atunci octeții sunt administrați sub magnitudinea.

Un felnulă.

Principalele tipuri includ, de asemenea, tipul de valori ale acestui tip - gol.

Variabile

Variabila în C ++ este o zonă de memorie numită în care sunt stocate datele. Variabila are un nume și valoare. Numele servește pentru a se referi la zona de memorie în care valoarea este stocată. Înainte de utilizare, trebuie descrisă orice variabilă. Exemple:

Vedere generală a descrierii descrierii:

[clasa de memorie] Numele tipului [inițializator];

Clasa de memorie poate lua valori: auto, extern, static, înregistrare. Clasa de memorie determină durata de viață și scopul variabilei. Dacă clasa de memorie nu este specificată explicit, compilatorul determină pe baza contextului publicitar. Timpul de viață poate fi permanent - în timpul executării programului sau temporar - în timpul blocului. Domeniu de aplicare - o parte a textului programului de la care presupunem accesul obișnuit la variabilă. De obicei, domeniul de vizibilitate coincide cu zona de acțiune. În plus, cazul în care există o variabilă în blocul intern cu același nume.

Const - indică faptul că această variabilă nu poate fi modificată (denumită constantă).

Când descrieți, puteți atribui o variabilă de valoare inițială (inițializare).

Clase de memorie:

variabila locală auto-automată. Specificatorul auto poate fi specificat numai la determinarea obiectelor bloc, de exemplu, în funcția corpului. Această memorie variabilă este eliberată la intrare la unitate și este eliberată atunci când iese. În afara blocului, astfel de variabile nu există.

externul este o variabilă globală, este într-un alt loc al programului (într-un alt fișier sau o acțiune în text). Folosit pentru a crea variabile disponibile în toate fișierele programului.

static este o variabilă statică, există numai în limitele fișierului în care este definită variabila.

registrul este similar cu Auto, dar memoria este alocată în registrele procesorului. Dacă nu există o astfel de posibilitate, variabilele sunt procesate ca auto.

Int a; // Variabilă variabilă globală () (int b; // variabila locală externă INT X; // variabilă x este definită în altă parte statică INT C; // variabilă statică locală A \u003d 1; // atribuirea unei variabile globale INT A; / / Variabilă locală AA \u003d 2; // Atribuirea unei variabile locale: A \u003d 3; // Atribuirea unei variabile globale) INT X \u003d 4; // Definiție și inițializare x

În exemplu, variabila A este determinată în afara tuturor blocurilor. Zona de acțiune a variabilei A este întregul program, cu excepția acelor rânduri în care se utilizează variabila locală A. Variabilele B și C - Local, zona vizibilității lor este un bloc. Durata de viață: Memoria sub B este eliberată atunci când introduceți blocul (deoarece, în mod implicit, clasa de memorie Auto) este eliberată atunci când ieșiți. O variabilă cu (static) există în timp ce programul funcționează.

Dacă, atunci când determinați valoarea inițială, variabilele nu sunt specificate explicit, apoi compilatorul resetează variabilele globale și statice. Variabilele automate nu sunt inițializate ..

Numele variabilei ar trebui să fie unic în domeniul său de acțiune.

Descrierea variabilei poate fi finalizată sau ca AD sau ca definiție. Anunțul conține informații despre clasa de memorie și tipul de variabilă, definiția împreună cu aceste informații oferă o indicație pentru alocarea memoriei. În exemplul de extern int x; - Anunț, și restul - definiții.

SI / + Operații Semne

Semnele de operațiuni asigură formarea de expresii. Expresiile constau din operanzi, semne de operațiuni și paranteze. Fiecare operand este, la rândul său, expresia sau cazul privat al expresiilor este o constantă sau variabilă.

Operațiuni unice

& obținerea adresei operandului
* Apel la adresa (intervalul)
unitar minus, schimbă semnul operandului aritmetic
~ inversarea discontinuă a codului binar intern al operandului integer (negare bitwise)
! negare logică (nu). Ca valori logice, 0 - False și nu 0 - Adevărul, Denial 0 va fi 1, negarea oricărui număr non-zero va fi 0.
++ Crește cu unul:

operațiunea Prefix - mărește operandul de utilizare,

operațiunea postfixează operand după utilizare.

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

— — reducerea pe unitate:

funcționarea Prefix - reduce operanii înainte de utilizare,

operația Postfix reduce operandul după utilizare.

sizeof. calculul mărimii (în octeți) pentru obiectul acelui tip, care are un operand

are două forme

dimensiunea expresiei

sizeof (plutitor) // 4

sizeof (1.0) // 8, deoarece constanturile reale implicite au un tip de dublu

Operațiuni binare.

Aditiv:

Multiplicativ:

Schimbarea operațiunilor (definite numai pentru operanții întregi).

Formatul de expresie cu funcționarea cu schimbare:

operand_shel operand operand operand operand

Operațiunile cifrelor:

Operațiuni de comparație: rezultatul este adevărat (nu 0) sau fals (0)

Operațiuni binare logice:

Operațiuni de atribuire

Etc.

Formatarea operațiunilor Simple de atribuire:

operand1 \u003d operand2.

Valoarea de curgere la stânga (valoarea L) este o expresie care adresează o anumită secțiune a memoriei, adică poate fi adăugată la ea. Acest nume sa întâmplat de la operațiunea de atribuire, deoarece partea stângă a operațiunii de atribuire este determinată pe care funcționarea operației va fi introdusă în ce domeniu de memorie. Variabila este un caz special de expresie lezivă.

Funcționarea condiționată.

Spre deosebire de operațiunile unice și binare, utilizează trei operanzi.

Expresie1? Expresie2: expresie3;

Prima este valoarea expresiei1. Dacă este adevărat, se calculează valoarea expresiei2, care devine rezultatul. Dacă, atunci când se calculează expresia1, se dovedește 0, apoi valoarea de expresie este luată ca rezultat.

De exemplu:

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

Funcționarea tipului de tip explicit (conversie).

Există două forme: canonic și funcțional:

1) (nume) operand

2) Type_name (operand)

(int) o formă canonică

int (a) // formă funcțională

Expresii

Din constante, variabile, separatoare și operațiuni ale operațiunilor pot fi proiectarea expresiilor. Fiecare expresie este o regulă de calculare a unei noi valori .. dacă expresia generează un număr întreg sau real, atunci se numește aritmetică. O pereche de expresii aritmetice, combinate cu o operațiune de comparație, se numește o atitudine. Dacă raportul are o valoare non-zero, atunci este adevărat, altfel - FALSE.

Prioritățile operațiunilor în expresii

Rang Operațiuni
1 () -> .
2 Fotografiile! ~ - ++ - & * (Tip) Tipul ()
3 * /% (binar multiplicativ)
+ - (aditiv binar)
5 << >\u003e (Shift Bonnetică)
6 < > <= >\u003d (Relație)
7 \u003d\u003d! \u003d (Relație)
8 & (conjuncție de legătură "și")
9 ^ (Figura cu excepția "sau")
10 | (Diajuncția "sau")
11 && (conjuncția "și")
12 ||. (disjuncție "sau")
13 ?: (Operațiunea condiționată)
14 = *= /= %= -= &= ^= |= <<= >\u003e \u003d (Operațiunea de atribuire)
15 (Operațiunea virgulă)

Ultima actualizare: 06/19/2017

Un set separat de operații este expresii condiționate. Astfel de operațiuni returnează o valoare logică, adică valoarea tipului Bool: Adevărat, dacă expresia este cu adevărat, și falsă, dacă expresia este falsă. Astfel de operațiuni includ operațiuni de comparație și logice.

Operațiuni de comparație

În operațiunile de comparație, sunt comparate două operanzi și valoarea tipului Bool este adevărată, dacă expresia este adevărată și falsă, dacă expresia este incorectă.

    Comparați două operanzi pentru egalitate. Dacă acestea sunt egale, atunci operația returnează adevărat, dacă nu este egală, atunci Fals este returnat:

    B; // Fals

    Comparați doi operanzi și returnează adevărat dacă operanzii nu sunt egali și falsi, dacă sunt egali.

    Int a \u003d 10; int b \u003d 4; Bool c \u003d a! \u003d B; // Bool D \u003d A! \u003d 10; // Fals

    Funcționarea "mai mică decât". Returnează adevărat dacă primul operand este mai mic decât al doilea și fals, dacă primul operand este mai mare decât al doilea:

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

    Funcționare "mai mult decât". Comparați doi operanzi și returnează adevărat dacă primul operand este mai mult decât al doilea, altfel returnează fals:

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

    Funcționarea "mai puțin sau egală." Compară două operanzi și returnează adevărat dacă primul operand este mai mic sau egal cu al doilea. Altfel returnează fals.

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

    Funcționare "mai mare sau egală." Comparați doi operanzi și returnează adevărat dacă primul operand este mai mare sau egal cu cel de-al doilea, altfel Fals este returnat:

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

Operațiuni<, > <=, >\u003d au o prioritate mai mare decât \u003d\u003d și! \u003d.

Operații logice

De asemenea, în C # operatori logici definiți, care returnează și valoarea tipului BOOL. Ca operanzi, ei iau valoarea boolului. De regulă, aplicați relațiilor și combinați mai multe operațiuni de comparație.

    Funcționarea adăugării logice sau logice sau. Returnează adevărat dacă cel puțin unul dintre operanzi returnează adevărat.

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

    Funcționarea multiplicării logice sau a I. Returnează adevărat dacă ambii operanzi sunt simultan egali cu adevărat.

    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

    Funcționarea adăugării logice. Returnează adevărat dacă cel puțin unul dintre operanzi returnează adevărat.

    BOOL X1 \u003d (5\u003e 6) || (patru< 6); // 5 > 6 - False, 4< 6 - true, поэтому возвращается true bool x2 = (5 > 6) ||. (4\u003e 6); // 5\u003e 6 - False, 4\u003e 6 \u200b\u200b- Revenire falsă, atât de falsă

    Funcționarea multiplicării logice. Returnează adevărat dacă ambii operanzi sunt adevărați în același timp.

    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

    Funcționarea negării logice. Acesta este efectuat deasupra unui operand și returnează adevărat dacă operandul este fals. Dacă operandul este adevărat, operația returnează fals:

    Bool a \u003d adevărat; Bool b \u003d! A; // Fals

    Funcționarea cu excepția sau. Returnează adevărat dacă fie primul sau al doilea operand (dar nu în același timp) sunt adevărate, altfel returnează fals

    BOOL X5 \u003d (5\u003e 6) ^ (4< 6); // 5 > 6 - False, 4< 6 - true, поэтому возвращается true bool x6 = (50 > 6) ^ (4 / 2 < 3); // 50 > 6 - Adevărat, 4/2< 3 - true, поэтому возвращается false

Aici avem două perechi de operațiuni și ||. (precum și & &&) efectuează acțiuni similare, dar ele nu sunt echivalente.

În expresia z \u003d x | y; Ambele valori vor fi calculate - x și y.

În expresia z \u003d x || y; În primul rând, valoarea lui X va fi calculată mai întâi și, dacă este adevărat, calculul valorii lui Y nu are sens, deoarece în orice caz, Z va fi egal cu adevărat. Valoarea Y va fi calculată numai dacă X este egal cu fals

Același lucru este valabil și pentru pereche de operațiuni & /&. În expresia z \u003d x, ambele valori vor fi calculate - x și y.

În expresia z \u003d x și va fi mai întâi calculată x, iar dacă este egală cu falsul, calculul valorii lui Y nu are sens, deoarece în orice caz, Z va fi egal cu fals. Valoarea y va fi calculată numai dacă X este adevărat

Prin urmare, operațiunile || și && sunt mai convenabile în calcule, deoarece vă permite să reduceți timpul pentru calcularea valorii expresiei și, prin urmare, să creșteți productivitatea. Și operațiuni | și sunt mai potrivite pentru executarea operațiunilor de ofertă peste numere.

Operatori de relații și operatori logici

În notație operatorul relației și operator logic termen relaţii înseamnă relația care poate exista între două valori și termenul logic - relația dintre valorile logice ale "adevărului" și "minciuna". Și din moment ce operatorii relației dau rezultate adevărate sau false, ele sunt adesea folosite împreună cu operatorii logici. Din acest motiv, acestea sunt considerate în comun.

Mai jos sunt operatorii de relații:

Logical include operatorii de mai jos:

Rezultatul executării operatorului relației sau al operatorului logic este valoarea logică a tipului BOOL.

În general, obiectele pot fi comparate cu egalitatea sau inegalitatea folosind operatorii de relații \u003d\u003d și! \u003d. Și operatorii de comparație, \u003d pot fi utilizați numai la tipurile de date care suportă raportul de comandă. În consecință, operatorii relaționali pot fi aplicați la toate tipurile de date numerice. Dar valorile tipului BOOL pot fi comparate numai cu egalitatea sau inegalitatea, deoarece valorile adevărate (adevărate) și false (false) nu sunt comandate. De exemplu, comparația lui TRUE\u003e FALSE în C # nu are sens.

Luați în considerare un exemplu al unui program care demonstrează utilizarea relațiilor și a operatorilor logici:

Folosind sistemul; folosind sistemul.collections.Genic; Folosind sistemul.Linq; Utilizând System.Text; Console de nume de name1 & Var2) console ("var1 | var2 \u003d true"); dacă (var1 ^ var2) consolă.writerită ("var1 ^ var2 \u003d true"); consola.Readline ();)))

Operatorii logici din C # efectuează cele mai frecvente operațiuni logice. Cu toate acestea, există o serie de operațiuni efectuate de regulile logicii oficiale. Aceste operații logice pot fi construite folosind operatorii logici acceptați în C #. În consecință, în C # există un astfel de set de operatori logici, care este suficient pentru a construi aproape orice operațiune logică, inclusiv implicații. Amplicare - Aceasta este o operație binară, rezultatul căruia este o valoare falsă numai dacă operandul stâng are un adevărat sens, iar cel potrivit este fals. (Operațiunea de implicare reflectă următorul principiu: Adevărul nu poate implica o minciună.)

Operațiunea de implicare poate fi construită pe baza unei combinații de operatori logici! și |:

Operatorii logici scurți

C #, de asemenea, are special, scurtarea, Opțiuni pentru operatorii logici și sau, concepuți pentru a obține un cod mai eficient. Să explicăm în următoarele exemple de operațiuni logice. În cazul în care primul operand al unei operații logice și are o valoare falsă (falsă), atunci rezultatul său va avea o valoare falsă indiferent de valoarea celui de-al doilea operand. În cazul în care primul operand al unei operații logice sau are o valoare reală (adevărat), atunci rezultatul său va avea o valoare reală, indiferent de valoarea celui de-al doilea operand. Datorită faptului că valoarea celui de-al doilea operand în aceste operațiuni nu trebuie să fie calculată, economisește timp și mărește eficiența codului.

O operație logică scurtată și se efectuează utilizând operator &&, și o operațiune logică scurtată sau - cu operator ||.. Acești operatori logici scurți corespund operatorilor logici obișnuiți și și |. Singura diferență dintre operatorul logic scurtat de la minciunile obișnuite în faptul că al doilea operand este calculat numai după cum este necesar.

Orice expresie a limbii constă în operanzi (variabile, constante etc.) legate de semnele de operațiuni. Semnul de operare este un simbol sau un grup de caractere care raportează compilator cu privire la necesitatea de a efectua anumite acțiuni aritmetice, logice sau alte acțiuni.

Operațiunile sunt efectuate într-o secvență strictă. Valoarea care determină dreptul de preemptive de a efectua o anumită operațiune se numește prioritate. În fila. 2 listați diverse operațiuni ale limbii Si (c). Prioritățile lor pentru fiecare grup sunt aceleași (grupurile sunt evidențiate în culoare). Avantajul mai mare este utilizat grupul corespunzător de operații, cu atât este mai mare în masă. Procedura de efectuare a operațiunilor poate fi reglată utilizând paranteze.

Tabelul 2 - Operații

Semn de operare

Scopul operației

Funcția apelului

Alocarea elementului matricei

Selectarea elementului de intrare

Selectarea elementului de intrare

Negare logică

Denial Digital.

Schimbarea semnului.

Egalitatea pe unitate

Reducerea pe unitate

Luând adresa

Apel la adresa

Tip conversie (adică (float) a)

Determinarea dimensiunii în octeți

Multiplicare

Determinarea echilibrului

Plus

Scădere

Schimbare la stânga

Trecerea la dreapta

Mai puțin decât

Mai puțin sau egal

Mai mult decât

Mai mult sau egal

Log logic "și"

Cifra exclusiv "sau"

Log logic "sau"

Logic "și"

Logic "sau"

Operațiunea condiționată (ternar)

Misiune

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

Operațiuni binare (de exemplu, A * \u003d B
(adică a \u003d a * b) etc.)

Operațiunea Comma.

Operator în SI (c)

Pentru a exclude confuzia în conceptele de "operație" și "operator", observăm că operatorul este cea mai mică unitate executabilă a programului. Operatorii de expresie se deosebesc, a cărei acțiune constă în calcularea expresiilor specificate (de exemplu: a \u003d păcat (b) + c; j ++;), operatori publici, operatori compuși, operatori goli, operatori de etichete, ciclu etc. . Pentru a se referi la sfârșitul operatorului în limba SI (C), se utilizează un punct. În ceea ce privește operatorul compozit (sau blocul), care este un set de operatori legați logic plasați între bara de deschidere ((() și închidere ("parantezele operatorului"), atunci punctul cu o virgulă nu este pusă. Rețineți că blocul diferă de operatorul compozit prin prezența definițiilor în corpul blocului.

Caracteristicile principalelor operațiuni ale limbii Si (c)

Caracterizăm operațiile de bază ale limbajului SI (C).

Operațiunea de atribuire

În primul rând, luați în considerare una dintre ele - operația de atribuire (\u003d). Exprimarea tipului.

alocă valoarea variabilă x a variabilei y. Operațiunea "\u003d" este permisă utilizarea de mai multe ori într-o singură expresie, de exemplu:

x \u003d y \u003d z \u003d 100;

Distinge operațiile unoratoare și binare. În primul dintre acestea, un operand și al doilea - doi. Să începem luarea în considerare a operațiunilor legate de primele dintre următoarele grupuri tradiționale:

Operatii aritmetice.

Operațiuni logice și relații relații.

Operațiuni cu biți.

Operațiile aritmetice sunt stabilite prin următoarele simboluri (Tabelul 2): \u200b\u200b+, -, *, /,%. Ultimul nu poate fi aplicat unei variabile de tip real. De exemplu:

a \u003d B + C;
X \u003d Y - Z;
R \u003d t * v;
s \u003d k / l;
P \u003d Q% w;

Operații logice

Operațiile de relații logice sunt setate de următoarele simboluri (a se vedea tabelul 2): \u200b\u200b&& ("și"), || ("Sau"),! ("Nu"),\u003e,\u003e \u003d,<, <= , = = (равно), != (не равно). Традиционно эти операции должны давать одно из двух значений: истину или ложь. В языке СИ (C)принято следующее правило: истина - это любое ненулевое значение; ложь - это нулевое значение. Выражения, использующие логические операции и операции отношения, возвращают 0 для ложного значения и 1 для истинного. Ниже приводится таблица истинности для логических операций.

Operațiunile de biți pot fi aplicate variabilelor care au Tipuri INT, caractere, precum și variantelor lor (de exemplu, Long Int). Acestea nu pot fi aplicate tipurilor variabile de float, dublu, vid (sau mai complexe tipuri). Aceste operațiuni sunt stabilite de următoarele simboluri: ~ (negare bonnetală),<< (сдвиг влево), >\u003e (trecerea la dreapta), & (capotă "și"), ^ (biți exclusiv "sau"), | (Cifră "sau").

Exemple: dacă a \u003d 0000 1111 și b \u003d 1000 1000, atunci

~ 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.

Limba prevede două operațiuni de creștere netradiționale (++) și decrement (-). Acestea sunt concepute pentru a crește și a micșora valoarea operandului. Operațiunea ++ și - poate fi înregistrată atât în \u200b\u200bfața operandului, cât și după aceasta. În primul caz (++ N sau --n), valoarea operandului (n) se schimbă înainte de utilizarea sa în expresia corespunzătoare și în al doilea (n ++ sau n--) - după utilizare. Luați în considerare următoarele două rânduri ale programului:

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

Să presupunem că B \u003d B1 \u003d 2, C \u003d C1 \u003d 4. Apoi după operații de performanță: A \u003d 6, B \u003d 2, C \u003d 5, A1 \u003d 7, B1 \u003d 2, C1 \u003d 5.

Expresiile cu o altă operațiune ternară sau condiționată netradițională sunt răspândite. În formula

y \u003d A, dacă X nu este zero (adică adevărat), și y \u003d b, dacă x este zero (fals). Următoarea expresie

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

vă permite să atribuiți o variabilă în valoarea unei variabile mai mari (A sau B), adică y \u003d max (A, B).

O altă distincție a limbii este aceea că expresia formei A \u003d a + 5; pot fi scrise într-o altă formă: a + \u003d 5; În loc de un semn + puteți utiliza simbolurile altor operații binare (a se vedea tabelul 2).

Alte operațiuni de masă. 2 vor fi descrise în paragrafele ulterioare.

Ciclurile sunt organizate pentru a efectua un anumit operator sau un grup de operatori un anumit număr de ori. În limba SI (c), trei operatori de ciclism: pentru, în timp ce și fac - în timp ce. Primul dintre acestea este scris în mod oficial, în forma următoare:

pentru (expresie_1; expresie_2; expresie_3) body_tsikla

Corpul ciclului este fie un operator, fie mai mulți operatori închise în paranteze curat (...) (după ce punctul de bloc cu virgulă nu este plasat). În expresii 1, 2, 3 apare o variabilă specială numită controlul. Prin valoarea sa, este stabilită necesitatea de a repeta ciclul sau ieșirea din acesta.

Expression_1 atribuie valoarea inițială a variabilei de control, expresia_s modifică la fiecare pas, iar expresia_2 verifică dacă a atins valoarea limită care stabilește necesitatea de a ieși din ciclu.

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

pentru (СH \u003d "A"; CH! \u003d "P";) SCANF ("% C", & CH);

/ * Ciclul va fi executat până la tastatură

simbolul "P" * /

Oricare dintre cele trei expresii din ciclu poate fi absentă, totuși, punctul cu o virgulă ar trebui să rămână. Astfel, pentru (;) (...) este un ciclu infinit, din care puteți ieși numai în alte moduri.

În limba SI (c), se ia următoarea regulă. Orice expresie cu o operațiune de atribuire închisă în paranteze este egală cu atribuirea. De exemplu, expresia (A \u003d 7 + 2) este 9. După aceea, puteți scrie o altă expresie, de exemplu: ((a \u003d 7 + 2)<10), которое в данном случае будет всегда давать истинное значение. Следующая конструкция:

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

vă permite să introduceți valoarea variabilei CH și să dați rezultatul adevărat numai atunci când valoarea introdusă este litera "I". În paranteze, puteți înregistra mai multe formule care constituie o expresie complexă. În aceste scopuri, se utilizează operațiunea virgulă. Formulele vor fi calculate de la stânga la dreapta și toată expresia va lua valoarea ultimei formule calculate. De exemplu, dacă există două variabile de tip char, atunci expresie

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

definește următoarele acțiuni: Valoarea variabilei Y este atribuită variabilei X; Un simbol de la tastatură este introdus și atribuit variabila Y; Z primește valoarea variabilei y. Parantezele sunt necesare aici, deoarece operația virgulă are o prioritate mai mică decât operația de atribuire înregistrată după variabila Z. Operația virgulă este utilizată pe scară largă pentru a construi expresii pentru cicluri și vă permite să schimbați simultan valorile mai multor variabile de control.

Structurile investite sunt permise, adică În corpul unui anumit ciclu, pot apărea altele pentru operatori.

Declarația în timp ce este scrisă oficial în acest formular:

În timp ce (expresie) body_tsikla

Expresia în paranteze poate lua valoare non-zero (adevărat) sau zero (falsă). Dacă este cu adevărat, corpul ciclului este efectuat și expresia este calculată din nou. Dacă expresia este falsă, atunci ciclul se termină.

Do-În timp ce declarația este scrisă oficial după cum urmează:

face (body_cyklla) în timp ce (expresie);

Diferența principală dintre timp și face - în timp ce ciclurile sunt că corpul din Do - în timp ce ciclul se efectuează cel puțin o dată. Corpul ciclului va fi efectuat până când expresia în paranteze va avea o valoare falsă. Dacă este falsă atunci când intrați în ciclu, corpul său este efectuat exact o dată.

Cuibarea unor cicluri pentru alții este permisă, adică În corpul oricărui ciclu, operatorii pentru, în timp ce pot apărea - în timp ce pot apărea.

În corpul ciclului, pot fi utilizate noi pauze și continuarea operatorilor. Operatorul de pauză oferă o ieșire imediată din ciclu, operatorul Continue cauzează terminarea următorului și începutul ulterioare iterației.

Operatori de tranziție condițională și necondiționată

Pentru a organiza tranziții condiționate și necondiționate în programul SI (C) (C), se utilizează operatori: dacă altceva, comutator și goo. Primul este scris după cum urmează:

dacă (check_linking) operator_1; Altfel operator_2;

Dacă condiția din paranteze are valoarea reală, operatorul_1 se efectuează dacă operatorul fals_2. Dacă în loc de unul trebuie să efectuați mai mulți operatori, atunci sunt bretele curbate. În declarația IF, cuvântul altceva poate fi absent.

În declarația IF - altcineva, direct după ce cuvintele cheie dacă și altceva trebuie să urmeze alți operatori. Dacă cel puțin unul dintre ele este un operator dacă se numește investit. Conform acordului adoptat în Acordul SI (c), cuvântul se referă întotdeauna la cel mai apropiat dacă este înainte de aceasta.

Operatorul de comutare vă permite să alegeți una dintre mai multe alternative. Este scris în următoarea formă oficială:

comutator (expresie)

case Constanța_1: Operatori_1;

case Constanta_2: Operatori_2;

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

implicit: operatori_default;

Aici se calculează valoarea unei întregi expresii în paranteze (se numește uneori selector) și este comparată cu toate constante (expresii constante). Toate constantele trebuie să fie diferite. Când se potrivește, se execută o versiune adecvată a operatorilor (unul sau mai mulți operatori). O opțiune cu un cuvânt cheie implicită este implementată dacă nu este abordată altul (cuvântul implicit poate fi lipsită). Dacă implicit este absent și toate rezultatele comparației sunt negative, atunci nu se efectuează nicio opțiune.

Pentru a opri verificările ulterioare după o alegere reușită a unei anumite opțiuni, se utilizează operatorul de pauză, oferind o ieșire imediată din comutatorul de comutare.

Investit design-uri.

Luați în considerare regulile de efectuare a unei tranziții necondiționate care pot fi prezentate în formularul următor:

goto etichetă;

Eticheta este orice identificator după care este livrat colonul. Operatorul GOTO indică faptul că programul trebuie continuat de la operator, înainte de înregistrarea etichetei. Eticheta poate fi pusă în fața oricărui operator în funcția unde operatorul Goto corespunde acestuia. Nu ar trebui anunțat.

Debuggerul Turbo sprijină pe deplin sintaxa expresiilor expresiilor Si (C). Expresia constă dintr-un amestec de operații, rânduri, variabile



Ți-a plăcut articolul? Împărtășește-l