English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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:
Operatori aritmetici
Operatori di assegnazione
Operatori relazionali
Operatori logici
Operatori a livello di bit
Altri operatori
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:
Operatore | Descrizione | Esempio |
---|---|---|
+ | Aggiungi i due operandi | A + B otterrà 30 |
- | Sottrarre il secondo operando dal primo | A - B otterrà -10 |
* | Moltiplica i due operandi | A * B otterrà 200 |
/ | Il numeratore diviso il denominatore | B / A otterrà 2 |
% | L'operatore modulo, il resto della divisione intera | B % A otterrà 0 |
++ | L'operatore incremento, aumenta il valore intero di 1 | A++ otterrà 11 |
-- | L'operatore decremento, riduce il valore intero di 1 | A-- otterrà 9 |
#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.
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.
// 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.
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 | Esempio | uguale |
---|---|---|
= | 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; |
#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
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:
Operatore | Descrizione | Esempio |
---|---|---|
== | 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. |
#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
注意:关系运算符用于决策和循环。
逻辑运算符用于检查表达式是true还是false。如果表达式为true,则返回1;如果表达式为false,则返回0.
p>假设变量 A 的值为 1,变量 B 的值为 0,则:
Operatore | Descrizione | Esempio |
---|---|---|
&& | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (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
#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).
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:
Operatore | Descrizione | Esempio |
---|---|---|
& | 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.
La tabella seguente elenca altri importanti operatori supportati da C++.
Operatore | Descrizione |
---|---|
sizeof | Operatore sizeofRestituisce la dimensione della variabile. Ad esempio, sizeof(a) restituirà 4, dove a è un intero. |
Condition ? X : Y | Operatore 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. |
Conversione | Operatore 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. |
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 |
#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++