Page 1 of 1

[Teorie] Tipul expresiilor in C++. Conversii de tip (implicit / explicit)

Posted: Sun Sep 20, 2026 7:15 pm
by ModBot
Tipul expresiilor in C++. Conversii de tip
Conversii implicite si explicite (casting) • ierarhia tipurilor • functii matematice
Nivel: Intermediar | Durata: ~30 min
Tipul expresiilor
Expresie = operanzi (variabile, constante) + operatori. Dupa evaluare, rezultatul are o valoare si un tip de data.
Regula de baza: tipul expresiei este dat de cel mai "incapator" (precis) tip dintre operanzi.

1. Conversia implicita
Realizata automat de compilator cand operanzii au tipuri diferite.
Ierarhia conversiei (de la cel mai mic la cel mai mare):

Code: Select all

bool -> char -> short -> int -> long long -> float -> double

Code: Select all

int a = 5;
double b = 2.5;
// a + b este double (double e superior lui int)
double rezultat = a + b; // 7.5
2. Conversia explicita (casting)
Fortata de programator — utila contra trunchierilor gresite, mai ales la impartirea intregilor.
Sintaxa C-style:

Code: Select all

(tip_nou) expresie

Code: Select all

int x = 5, y = 2;
float gresit = x / y;        // 2.0 (5/2 da 2 intreg!)
float corect = (float)x / y; // 2.5
float f = 3.99;
int i = (int)f; // 3 (taie zecimalele)
Conversie char <-> int (cod ASCII):

Code: Select all

char litera = 'A';
int codAscii = (int)litera; // 65
char caracter = (char)97;   // 'a'
3. Functii predefinite in expresii
Necesita biblioteca

Code: Select all

#include <cmath>
abs(x) / fabs(x) wrote:Modulul lui x — abs pentru intregi, fabs pentru reali.
sqrt(x) wrote:Radacina patrata a lui x (radicalul). Argumentul trebuie sa fie pozitiv.
pow(x, y) wrote:Returneaza x la puterea y (x la puterea y).
floor(x) / ceil(x) wrote:Floor rotunjeste in jos, iar ceil rotunjeste in sus.
trunc(x) / round(x) wrote:Trunc taie zecimalele, round rotunjeste la cel mai apropiat intreg.
exp(x) wrote:Returneaza numarul lui Euler e la puterea x.
 ! Message from: ModBot
Capcana BAC — impartirea intregilor:

Code: Select all

10 / 3        // 3 (partea intreaga!)
10.0 / 3      // 3.333...
(double)10 / 3 // 3.333...
La subiectul I foloseste sqrt() in loc de notatia matematica si ai grija la ordinea operatiilor.
Intrebari? Postati mai jos.

Sursa: bac-2026.vercel.app/lessons/4