English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

运算符C++

In questo tutorial, impareremo a utilizzare esempi per studiare i vari tipi di operatori in C++. Ne programmazione, gli operatori sono i simboli che eseguono operazioni sui valori o le variabili.

Gli operatori sono i simboli che eseguono operazioni su variabili e valori. Ad esempio, + è l'operatore di somma, mentre - è l'operatore di sottrazione.

Gli operatori in C++ possono essere classificati in sei tipi:

  1. Operatori aritmetici

  2. Operatori di assegnazione

  3. Operatori relazionali

  4. Operatori logici

  5. Operatori a livello di bit

  6. Altri operatori

1. Operatori aritmetici C++

Gli operatori aritmetici vengono utilizzati per eseguire operazioni aritmetiche su variabili e dati. Ad esempio:

a + b;

In questo caso, l'operatore + viene utilizzato per sommare due variabili a e b. Allo stesso modo, in C++ ci sono altri vari tipi di operatori aritmetici.

Supponiamo che il valore della variabile A sia 10 e il valore della variabile B sia 20, allora:

OperatoreDescrizioneEsempio
+Aggiungi i due operandiA + B otterrà 30
-Sottrarre il secondo operando dal primoA - B otterrà -10
*Moltiplica i due operandiA * B otterrà 200
/Il numeratore diviso il denominatoreB / A otterrà 2
%L'operatore modulo, il resto della divisione interaB % A otterrà 0
++L'operatore incremento, aumenta il valore intero di 1A++ otterrà 11
--L'operatore decremento, riduce il valore intero di 1A-- otterrà 9

Esempio 1: Operatori aritmetici

#include <iostream>
using namespace std;
int main() {
    int a, b;
    a = 7;
    b = 2;
    // Stampa la somma di a e b
    cout << "a + b = " << (a + b) << endl;
    // Stampa la differenza tra a e b
    cout << "a - b = " << (a - b) << endl;
    // Stampa il prodotto di a e b
    cout << "a * b = " << (a * b) << endl;
    // Stampa a diviso b
    cout << "a / b = " << (a / b) << endl;
    // Stampa il resto (modulo) di a e b
    cout << "a % b = " << (a % b) << endl;
    return 0;
}

Output del risultato

a + b = 9
a - b = 5
a * b = 14
a / b = 3
a % b = 1

qui, gli operatori +, -, e * calcolano rispettivamente addizione, sottrazione e moltiplicazione, come ci si aspetta.

/ Operatore di divisione

Attenzione all'operazione nel nostro programma (a / b). L'operatore / è l'operatore di divisione.

Dai esempi sopra, possiamo vedere che se un intero viene diviso per un altro intero, otteniamo il quoziente. Tuttavia, se il divisore o il dividendio è un numero a virgola mobile, otteniamo un risultato in forma decimale.

In C++
7/2 = 3
7.0 / 2 = 3.5
7 / 2.0 = 3.5
7.0 / 2.0 = 3.5

% Operatore modulo

L'operatore modulo % calcola il resto. Quando a (9) viene diviso per b(4), il resto è1.

Attenzione:L'operazione % può essere utilizzata solo con numeri interi.

Operatori di incrementazione e decrementazione

C++ fornisce anche operatori di incrementazione e decrementazione separati: ++ e --.

++ aumenta il valore dell'operando1.

-- riduce il valore dell'operando1.

Ad esempio,

int num = 5;
// num aumenta di 1
++num;

qui, il valore di num è aumentato da un valore iniziale di 5 a 6.

Esempio 2: Operatori di incrementazione e decrementazione

// Funzionamento degli operatori di incrementazione e decrementazione
#include <iostream>
using namespace std;
int main() {
    int a = 10, b = 100, result_a, result_b;
    // Aggiungere 1 a a e memorizzare il risultato in result_a
    result_a = ++a;
    cout << "result_a = " << result_a << endl;
    // Sottrarre 1 da b e memorizzare il risultato in result_b
    result_b = --b;
    cout << "result_b = " << result_b << endl;
    return 0;
}

Output del risultato

result_a = 11
result_b = 99

Nel programma sopra, abbiamo utilizzato gli operatori ++ e - come prefisso. Possiamo anche utilizzare questi operatori come suffisso.

Questi operatori differiscono leggermente quando usati come prefisso rispetto a quando usati come suffisso.

2. Operatore di assegnazione C++

In C++, l'operatore di assegnazione viene utilizzato per assegnare un valore a una variabile. Ad esempio,

// Assegnare 5 al variabile a
a = 5;

qui, abbiamo assegnato al variabile a un valore di 5.

Operatore
Esempiouguale
=a = b;a = b;
+=a += b;a = a + b;
-=a -= b;a = a - b;
*=a *= b;a = a * b;
/=a /= b;a = a / b;
%=a %= b;a = a % b;

Esempio 2: Operatori di assegnazione

#include <iostream>
using namespace std;
int main() {
    int a, b, temp;
    // Assegna 2 a a
    a = 2;
    // Assegna 7 a b
    b = 7;
   // Assegna il valore di a a temp
   temp = a; // temp sarà 2
   cout << "temp = " << temp << endl;
    // Assegna la somma di a e b a
    a += b; // a = a + b
    cout << "a = " << a << endl;
    return 0;
}

Output del risultato

temp = 2
a = 9

3. Operatori di relazione C++

Gli operatori di relazione si usano per controllare la relazione tra due operandi. Ad esempio,

// Controlla se a è maggiore di b
a > b;

Qui, > è un operatore di relazione. Controlla se a è maggiore di b.

Se questa relazione ètrue,则返回1;Se questa relazione èfalse,则返回0.

Supponiamo che il valore della variabile A sia 5, il valore della variabile B sia 11, allora:

OperatoreDescrizioneEsempio
==Controlla se i valori degli operandi sono uguali, se lo sono, la condizione è vera.(A == B) non è vero.
!=Controlla se i valori degli operandi sono uguali, se non lo sono, la condizione è vera.(A != B) è vero.
>Controlla se il valore dell'operando sinistro è maggiore del valore dell'operando destro, se lo è, la condizione è vera.(A > B) non è vero.
<Controlla se il valore dell'operando sinistro è minore del valore dell'operando destro, se lo è, la condizione è vera.(A < B) è vero.
>=Controlla se il valore dell'operando sinistro è maggiore o uguale al valore dell'operando destro, se lo è, la condizione è vera.(A >= B) non è vero.
<=Controlla se il valore dell'operando sinistro è minore o uguale al valore dell'operando destro, se lo è, la condizione è vera.(A <= B) è vero.

Esempio 4: Operatori di relazione

#include <iostream>
using namespace std;
int main() {
    int a, b;
    a = 3;
    b = 5;
    bool result;
    result = (a == b); // falso
    cout << "3 == 5 计算结果为 " << result << endl;
    result = (a != b); // vero
    cout << "3 != 5 计算结果为 " << result << endl;
    result = a > b; // falso
    cout << "3 > 5 计算结果为 " << result << endl;
    result = a < b; // vero
    cout << "3 < 5 计算结果为 " << result << endl;
    result = a >= b; // false
    cout << "3 >= 5 计算结果为 " << result << endl;
    result = a <= b; // true
    cout << "3 <= 5 计算结果为 " << result << endl;
    return 0;
}

Output del risultato

3 == 5 计算结果为 0
3 != 5 计算结果为 1
3 > 5 计算结果为 0
3 < 5 计算结果为 1
3 >= 5 计算结果为 0
3 <= 5 计算结果为 1

注意:关系运算符用于决策和循环。

4. C ++逻辑运算符

逻辑运算符用于检查表达式是true还是false。如果表达式为true,则返回1;如果表达式为false,则返回0.

p>假设变量 A 的值为 1,变量 B 的值为 0,则:

OperatoreDescrizioneEsempio
&&称为逻辑与运算符。如果两个操作数都非零,则条件为真。(A && B) 为假。
||称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。(A || B) 为真。
!称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。!(A && B) 为真。

在C ++中,逻辑运算符通常用于决策制定。为了进一步了解逻辑运算符,让我们看下面的示例,

假设,
a = 5
b = 8
假如,
(a > 3) && (b > 5) 计算结果为 true
(a > 3) && (b < 5) 计算结果为 false
(a > 3) || (b > 5) 计算结果为 true
(a > 3) || (b < 5) 计算结果为 true
(a < 3) || (b < 5) 计算结果为 false
!(a == 3) 计算结果为 true
!(a > 3) 计算结果为 false

示例5:逻辑运算符

#include <iostream>
using namespace std;
int main() {
    bool result;
    result = (3 != 5) && (3 < 5); // true
    cout << "(3 != 5) && (3 < 5) 计算结果为 " << result << endl;
    result = (3 == 5) && (3 < 5); // false
    cout << "(3 == 5) && (3 < 5) il risultato è " << result << endl;
    result = (3 == 5) && (3 > 5); // falso
    cout << "(3 == 5) && (3 > 5) il risultato è " << result << endl;
    result = (3 != 5) || (3 < 5); // vero
    cout << "(3 != 5) || (3 < 5) il risultato è " << result << endl;
    result = (3 != 5) || (3 > 5); // vero
    cout << "(3 != 5) || (3 > 5) il risultato è " << result << endl;
    result = (3 == 5) || (3 > 5); // falso
    cout << "(3 == 5) || (3 > 5) il risultato è " << result << endl;
    result = !(5 == 2); // vero
    cout << "!(5 == 2) il risultato è " << result << endl;
    result = !(5 == 5); // falso
    cout << "!(5 == 5) il risultato è " << result << endl;
    return 0;
}

Output del risultato

(3 != 5) && (3 < 5) il risultato è 1
(3 == 5) && (3 < 5) il risultato è 0
(3 == 5) && (3 > 5) il risultato è 0
(3 != 5) || (3 < 5) il risultato è 1
(3 != 5) || (3 > 5) il risultato è 1
(3 == 5) || (3 < 5) il risultato è 0
!(5 == 2) il risultato è 1
!(5 == 5) il risultato è 0

L'uso del programma degli operatori logici

  • (3 != 5) && (3 < 5) il valore è 1 perché entrambi gli operandi (3 != 5) e (3 < 5) sono 1 (vero).

  • (3 == 5) && (3 < 5) il valore è 0 perché l'operando (3 == 5) è 0 (falso).

  • (3 == 5) && (3 > 5) il valore è 0 perché entrambi gli operandi (3 == 5) e (3 > 5) sono 0 (falso).

  • (3 != 5) || (3 < 5) avrà un valore di 1, poiché entrambi gli operandi (3 != 5) e (3 < 5) sono 1 (true).

  • (3 != 5) || (3 > 5) avrà un valore di 1, poiché l'operando (3 != 5) è 1 (true).

  • (3 == 5) || (3 > 5) avrà un valore di 0, poiché entrambi gli operandi (3 == 5) e (3 > 5) sono 0 (false).

  • !(5 == 2) avrà un valore di 1, poiché l'operando (5 == 2) è 0 (false).

  • !(5 == 5) avrà un valore di 0, poiché l'operando (5 == 5) è 1 (true).

5. Operatori a livello di bit di C++

Negli operatori a livello di bit di C++, si eseguono operazioni su singoli bit. Possono essere usati solo con i tipi di dati char e int.

La tabella seguente mostra gli operatori a livello di bit supportati da C++. Supponiamo che il valore della variabile A sia 60 e il valore della variabile B sia 13, allora:

OperatoreDescrizioneEsempio
&L'operatore AND binario copia un bit nel risultato se esiste contemporaneamente in entrambi gli operandi.(A & B) darà 12, ossia 0000 1100
|L'operatore OR binario copia un bit nel risultato se esiste in uno qualsiasi degli operandi.(A | B) darà 61, ossia 0011 1101
^L'operatore XOR binario copia un bit nel risultato se esiste in uno dei due operandi ma non in entrambi.(A ^ B) darà 49, ossia 0011 0001
~L'operatore a complemento a due è un operatore unario che ha l'effetto di 'invertire' i bit, ossia 0 diventa 1 e 1 diventa 0.(~A) darà -61, ossia 1100 0011, che è la rappresentazione in complemento a due di un numero binario a segno.
<<Operatore a sinistra a bit. Il valore del primo operando si sposta a sinistra di un numero di posizioni specificato dal secondo operando.A << 2 darà 240, ossia 1111 0000
>>Operatore a destra a bit. Il valore del primo operando si sposta a destra di un numero di posizioni specificato dal secondo operando.A >> 2 darà 15, ossia 0000 1111

Per ulteriori informazioni, visitareOperatori a livello di bit di C++.

Oltre agli operatori discussi in precedenza, ci sono anche altri operatori come sizeof, ?, ., & ecc., che non possono essere raggruppati in una o nell'altra categoria. Apprenderemo di più su questi operatori nei tutorial futuri.

Operatori vari

La tabella seguente elenca altri importanti operatori supportati da C++.

OperatoreDescrizione
sizeofOperatore sizeofRestituisce la dimensione della variabile. Ad esempio, sizeof(a) restituirà 4, dove a è un intero.
Condition ? X : YOperatore condizionale. Se Condition è vero ? allora il valore è X : altrimenti il valore è Y.
,Operatore di virgolaEsegue in sequenza una serie di operazioni. Il valore dell'espressione elencata con la virgola è il valore dell'ultima espressione nella lista separata da virgola.
. (punto) e -> (freccia)Operatore di membroUsato per accedere ai membri delle classi, delle strutture e delle unioni.
ConversioneOperatore di conversione forzataConverti un tipo di dati in un altro tipo di dati. Ad esempio, int(2.2000) restituirà 2.
&Operatore di puntamento & Restituisce l'indirizzo di una variabile. Ad esempio, &a; restituisce l'indirizzo reale della variabile.
*Operatore di puntamento * Punta a una variabile. Ad esempio, *var; punta alla variabile var.

Priorità degli operatori in C++

La priorità degli operatori determina la combinazione degli elementi nell'espressione. Questo influisce su come viene calcolata un'espressione. Alcuni operatori hanno una priorità più alta rispetto ad altri, ad esempio, gli operatori di moltiplicazione e divisione hanno una priorità più alta rispetto agli operatori di addizione e sottrazione.

Ad esempio x = 7 + 3 * 2, in questo caso, x viene assegnato il valore 13, non 20, perché l'operatore * ha una priorità più alta rispetto a +, quindi prima si calcola la moltiplicazione 3*2, poi si aggiunge 7.

La seguente tabella elenca tutti gli operatori in ordine di priorità da alto a basso, con gli operatori di priorità più alta in alto nella tabella e quelli di priorità più bassa in basso. Negli espressioni, gli operatori di priorità più alta vengono calcolati prima.

Categoria Operatore Combinazione 
Prefisso ( ) [] -> . ++ --  Da sinistra a destra 
Unario + - ! ~ ++ -- (type)* & sizeof Da destra a sinistra 
Moltiplicazione divisione * / % Da sinistra a destra 
Addizione sottrazione + - Da sinistra a destra 
Spostamento << >> Da sinistra a destra 
Relazionale < <= > >= Da sinistra a destra 
Uguale == != Da sinistra a destra 
Logico e AND & Da sinistra a destra 
Logico XOR ^ Da sinistra a destra 
Logico o OR | Da sinistra a destra 
Logico e AND && Da sinistra a destra 
Logico o OR || Da sinistra a destra 
Condizionale ?: Da destra a sinistra 
Assegnazione = += -= *= /= %= =>>= <<= &= ^= |= Da destra a sinistra 
Virgola , Da sinistra a destra 

Esempio: Priorità degli operatori

#include <iostream>
using namespace std;
int main() {
  // Calcola prima 17 * 6
  int num1 = 5 - 17 * 6;
  // Espressione equivalente a num1
  int num2 = 5 - (17 * 6);
  // Costringe il compilatore a calcolare prima il valore di 5 - 17
  int num3 = (5 - 17) * 6;
  cout << "num1 = " << num1 << endl;
  cout << "num2 = " << num2 << endl;
  cout << "num3 = " << num3 << endl;
  return 0;
}

结果输出:

num1 = -97
num2 = -97
num3 = -72

注意:由于C++中有很多运算符具有多个优先级,因此强烈建议我们使用括号使代码更具可读性。

推荐相关:优先级和关联性运算符C++