Skip to content

Operatori

Un programma senza operatori non può fare quasi nulla. Gli operatori sono i simboli che usano il programma per fare calcoli, confrontare valori e prendere decisioni.

Sono come i simboli matematici che già conosci (+, -, *, /), con qualche aggiunta specifica per la programmazione.

Questi operatori fanno calcoli matematici:

OperatoreOperazioneEsempioRisultato
+Addizione5 + 38
-Sottrazione5 - 32
*Moltiplicazione5 * 315
/Divisione10 / 33 (intera!)
%Modulo (resto)10 % 31
int a = 10, b = 3;
cout << a + b << endl; // 13
cout << a - b << endl; // 7
cout << a * b << endl; // 30
cout << a / b << endl; // 3 — attenzione, non 3.33!
cout << a % b << endl; // 1 — il resto della divisione

Quando si dividono due numeri interi, il risultato è sempre un intero. La parte decimale viene scartata, non arrotondata:

int x = 7, y = 2;
cout << x / y << endl; // 3 (non 3.5!)
// Per ottenere 3.5, converti uno dei due in double prima di dividere
double risultato = (double)x / y;
cout << risultato << endl; // 3.5

Il modulo restituisce il resto della divisione intera. È utile per capire se un numero è pari o dispari:

cout << 10 % 3 << endl; // 1 (10 = 3×3 + 1)
cout << 9 % 3 << endl; // 0 (9 è divisibile per 3)
cout << 7 % 2 << endl; // 1 (7 è dispari)
cout << 8 % 2 << endl; // 0 (8 è pari)

Oltre al semplice =, esistono operatori che modificano una variabile in un colpo solo:

OperatoreEquivalenteEsempio con x = 10
=assegnazione semplicex = 5 → x vale 5
+=x = x + yx += 3 → x vale 13
-=x = x - yx -= 3 → x vale 7
*=x = x * yx *= 2 → x vale 20
/=x = x / yx /= 5 → x vale 2
%=x = x % yx %= 3 → x vale 1
int x = 10;
x += 5; // x è ora 15
x -= 3; // x è ora 12
x *= 2; // x è ora 24
x /= 4; // x è ora 6
x %= 4; // x è ora 2

Aggiungere o sottrarre 1 è così comune in C++ che esistono operatori appositi:

int x = 5;
x++; // x diventa 6 (aggiunge 1)
x--; // x diventa 5 (sottrae 1)

Esistono anche nella forma con ++ prima della variabile:

int x = 5;
int b = x++; // prima assegna x a b (b = 5), poi incrementa x (x = 6)
int c = ++x; // prima incrementa x (x = 7), poi assegna a c (c = 7)

Per i principianti è sufficiente usare x++ e x-- da soli, senza usarli dentro espressioni complesse.

Confrontano due valori e restituiscono true (vero) o false (falso):

OperatoreSignificatoEsempioRisultato
==uguale a5 == 5true
!=diverso da5 != 3true
<minore di3 < 5true
>maggiore di5 > 3true
<=minore o uguale5 <= 5true
>=maggiore o uguale3 >= 5false
int a = 5, b = 3;
cout << (a == b) << endl; // 0 (false — 5 non è uguale a 3)
cout << (a != b) << endl; // 1 (true — 5 è diverso da 3)
cout << (a > b) << endl; // 1 (true — 5 è maggiore di 3)
cout << (a < b) << endl; // 0 (false — 5 non è minore di 3)

Errore comune: confondere == (confronto) con = (assegnazione). Scrivere if (x = 5) invece di if (x == 5) cambia il valore di x invece di confrontarlo!

Combinano più condizioni insieme:

OperatoreSignificatoEsempioRisultato
&&E (AND)true && falsefalse
||O (OR)true || falsetrue
!NON (NOT)!truefalse

AND (&&): entrambe le condizioni devono essere vere

Section titled “AND (&&): entrambe le condizioni devono essere vere”
int eta = 20;
bool haPatente = true;
if (eta >= 18 && haPatente) {
cout << "Puoi guidare." << endl;
}
// Entrambe le condizioni sono vere → stampa il messaggio

OR (||): basta che almeno una condizione sia vera

Section titled “OR (||): basta che almeno una condizione sia vera”
int ora = 14;
if (ora < 9 || ora > 18) {
cout << "Il negozio è chiuso." << endl;
} else {
cout << "Il negozio è aperto." << endl;
}
// ora = 14, nessuna delle due condizioni è vera → "aperto"
bool piove = false;
if (!piove) {
cout << "Possiamo uscire!" << endl;
}
// !false è true → stampa il messaggio

Come in matematica, alcuni operatori hanno la precedenza su altri. Da quella più alta a quella più bassa:

  1. !, ++, --
  2. *, /, %
  3. +, -
  4. <, >, <=, >=
  5. ==, !=
  6. &&
  7. ||
  8. =, +=, -=, ecc.

Quando hai dubbi, usa le parentesi per rendere esplicito l’ordine:

int risultato = 2 + 3 * 4; // 14 — la moltiplicazione va prima
int risultato2 = (2 + 3) * 4; // 20 — le parentesi cambiano tutto
#include <iostream>
using namespace std;
int main() {
int a = 15, b = 4;
// Operatori aritmetici
cout << "Somma: " << a + b << endl; // 19
cout << "Differenza: " << a - b << endl; // 11
cout << "Prodotto: " << a * b << endl; // 60
cout << "Quoziente: " << a / b << endl; // 3 (divisione intera)
cout << "Resto: " << a % b << endl; // 3
cout << endl;
// Operatori di confronto
cout << "a > b: " << (a > b) << endl; // 1 (true)
cout << "a == b: " << (a == b) << endl; // 0 (false)
// Operatori logici
bool cond = (a > 10) && (b < 10);
cout << "a>10 E b<10: " << cond << endl; // 1 (true)
return 0;
}