Limbajul C++: Expresii
Expresiile sunt formate din elementele de bază ale limbajului C (şi C++): date şi operatori.
Datele pot fi reprezentate fie prin variabile, fie prin constante.
C/C++ dispune, la fel ca majoritatea limbajelor de programare, de un număr diferit de tipuri de dată. De asemenea conţine o gamă variată de operatori.
Datele pot fi reprezentate fie prin variabile, fie prin constante.
C/C++ dispune, la fel ca majoritatea limbajelor de programare, de un număr diferit de tipuri de dată. De asemenea conţine o gamă variată de operatori.
Cinci tipuri de dată fundamentale
Limbajul C defineşte 5 tipuri de dată fundamentale: caractere (char), întregi (int), numere zecimale (virgulă mobilă; float şi double) şi fară-valoare (void).
Aşa cum veţi vedea, celelalte tipuri sunt construite pe baza acestora. Mărimea şi mulţimea de valori ale acestor date pot varia în funcţie de tipul procesorului şi compilator.
Pe lângă aceste 5 tipuri, în C++ vor mai fi definite alte două: bool şi wchar_t.
Mai jos este tabelul cu tipurile de dată fundamentale din C (definite de Standardul ANSI/ISO C):
Aşa cum veţi vedea, celelalte tipuri sunt construite pe baza acestora. Mărimea şi mulţimea de valori ale acestor date pot varia în funcţie de tipul procesorului şi compilator.
Pe lângă aceste 5 tipuri, în C++ vor mai fi definite alte două: bool şi wchar_t.
Mai jos este tabelul cu tipurile de dată fundamentale din C (definite de Standardul ANSI/ISO C):
Tipul void este folosit pentru a declara funcţii care nu returnează valori sau pentru a declara pointeri generici.
Modificarea tipurilor de baza
Exceptând tipul void, tipurile fundamentale pot fi precedate de diferiţi modificatori.
Modificatorul este folosit pentru a altera semnificaţia tipurilor de bază. Lista modificatorilor:
Folosirea signed în declararea întregilor este redundantă deoarece toate declarările int sunt considerate, implicit, signed. Acest modificator se foloseşte cu tipul char care este implicit unsigned.
Diferenţa dintre întregii signed şi unsigned constă în interpretarea diferită a bitului semnificativ (adică cel mai din stânga).
Pentru un întreg signed, compilatorul va considera bitul semnificativ ca fiind bit de semn. Dacă acest bit este 0 atunci numărul este pozitiv; dacă este 1 atunci este negativ.
Numerele negative sunt reprezentate în felul următor: se inversează toţi biţii (exceptând bitul de semn), se adaugă 1 (în binar) la număr, şi setează bitul de semn la 1. De exemplu, pentru numărul 32,767, reprezentarea binară este: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1.
Dacă bitul de semn (aici este 0) este schimbat în 1, atunci numărul este interpretat ca -1. Totuşi, dacă-l declaraţi ca unsigned int, atunci numărul devine 65,535 când bitul de semn este setat la 1.
Când folosiţi un modificator de unul singur (adică nu este urmat de un tip de dată) atunci tipul int va fi asumat.
Modificatorul este folosit pentru a altera semnificaţia tipurilor de bază. Lista modificatorilor:
- signed
- unsigned
- long
- short
Folosirea signed în declararea întregilor este redundantă deoarece toate declarările int sunt considerate, implicit, signed. Acest modificator se foloseşte cu tipul char care este implicit unsigned.
Diferenţa dintre întregii signed şi unsigned constă în interpretarea diferită a bitului semnificativ (adică cel mai din stânga).
Pentru un întreg signed, compilatorul va considera bitul semnificativ ca fiind bit de semn. Dacă acest bit este 0 atunci numărul este pozitiv; dacă este 1 atunci este negativ.
Numerele negative sunt reprezentate în felul următor: se inversează toţi biţii (exceptând bitul de semn), se adaugă 1 (în binar) la număr, şi setează bitul de semn la 1. De exemplu, pentru numărul 32,767, reprezentarea binară este: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1.
Dacă bitul de semn (aici este 0) este schimbat în 1, atunci numărul este interpretat ca -1. Totuşi, dacă-l declaraţi ca unsigned int, atunci numărul devine 65,535 când bitul de semn este setat la 1.
Când folosiţi un modificator de unul singur (adică nu este urmat de un tip de dată) atunci tipul int va fi asumat.
Variabile
O variabilă este un nume asociat cu o porţiune de memorie în care se memorează (stochează) o valoare, ce poate fi modificată ulterior (adică în timpul execuţiei) de către program. Toate variabilele trebuie declarate înainte de a fi folosite. Variabilele pot fi declarate în 3 locuri: în interiorul funcţiilor, în definiţia parametrilor formali, şi în afara tuturor funcţiilor.
Operatori
Există 4 clase de operatori în C/C++: aritmetici,relaţionali, logici, şibitwise(pe biţi). Pe lângă aceştia mai sunt câţiva speciali, care îndeplinesc anumite sarcini.
Operatori Aritmetici
Operatorii de incrementare şi decrementare pot fi folosiţi atât ca prefix cât şi sufix.
Când sunt folosiţi ca prefix, operaţie de incrementare sau decrementare se realizeazăînainte de evaluarea expresiei, iar atunci când sunt folosiţi ca sufix, operaţia de incrementare sau decrementare se realizează după evaluarea expresiei. Exemplu pentru ++, valabil şi pentru --.
Când sunt folosiţi ca prefix, operaţie de incrementare sau decrementare se realizeazăînainte de evaluarea expresiei, iar atunci când sunt folosiţi ca sufix, operaţia de incrementare sau decrementare se realizează după evaluarea expresiei. Exemplu pentru ++, valabil şi pentru --.
Operatori Logici si Rationali
În C, true este reprezentat de orice valoare diferită de zero, iar false este zero. În C++, se pătrează acest concept zero/non-zero, dar de asemenea este introdus un nou tip de dată, numit bool, cu valorile constante booleene: true şi false.
În C++ o valoare booleean 0 este automat convertită în false, iar o valoare non-zero este automat convertită în true. Reciproca este de asemenea validă.
Tabelul de adevăr pentru operatorii logici este prezentat mai jos, folosind 1 şi 0.
În C++ o valoare booleean 0 este automat convertită în false, iar o valoare non-zero este automat convertită în true. Reciproca este de asemenea validă.
Tabelul de adevăr pentru operatorii logici este prezentat mai jos, folosind 1 şi 0.
Tabelul cu operatorii relaţionali şi logici:
Întotdeauna puteţi folosi parantezele pentru a modifica ordinea efectuării operaţiilor într-o expresie.
Operatorii Bitwise
Realizează operaţii la nivelul biţilor. Pot fi aplicaţi numai tipurilor int şi char. Pe lângă operaţiile logice de mai sus, operaţiile cu biţi suportă şi operatorul Sau exclusiv (operaţia XOR).
Aşa cum se observă din tabel, rezultatul operaţiei XOR este true dacănumai unul din operanzi este true, altfel rezultatul este false.
Operatorii, constantele şi variabilele sunt constituenţii expresiilor. O expresie în C/C++ este orice combinaţie validă a acestor elemente.
Operatorii, constantele şi variabilele sunt constituenţii expresiilor. O expresie în C/C++ este orice combinaţie validă a acestor elemente.