C++ Operators
An operator is a symbol that tells the compiler to perform specific mathematical or logical operations. C++ has rich built-in operators and provides the following types of operators:
- Arithmetic Operators
- Relational Operators
- Logical Operators
- Bitwise Operators
- Assignment Operators
- Miscellaneous Operators
This chapter will introduce arithmetic operators, relational operators, logical operators, bitwise operators, assignment operators, and other operators one by one.
Arithmetic Operators
The following table shows the arithmetic operators supported by C++.
Assume variable A has a value of 10 and variable B has a value of 20, then:
| Operators | Description | Example |
|---|---|---|
| + | Add the two operands. | A + B will give 30 |
| - | Subtracts the second operand from the first operand. | A - B will give -10 |
| * | Multiply the two operands. | A * B will give 200 |
| / | Divide the numerator by the denominator. | B / A will give 2 |
| % | Modulus operator, the remainder after integer division. | B % A will give 0 |
| ++ | Increment Operator, integer value increases by 1. | A++ will give 11 |
| -- | Decrement Operator, integer value decreases by 1. | A-- will give 9 |
Example
See the following examples to understand the arithmetic operators available in C++.
Copy and paste the following C++ program into the test.cpp file, compile and run the program.
Example
When the above code is compiled and executed, it produces the following results:
Line 1 - c 的值是 31 Line 2 - c 的值是 11 Line 3 - c 的值是 210 Line 4 - c 的值是 2 Line 5 - c 的值是 1 Line 6 - c 的值是 10 Line 7 - c 的值是 10
Relational Operators
The following table shows the relational operators supported by C++.
Assume variable A has a value of 10 and variable B has a value of 20, then:
| Operators | Description | Example |
|---|---|---|
| == | Checks whether the values of two operands are equal; if equal, the condition is true. | (A == B) is not true. |
| != | Checks whether the values of two operands are equal; if not equal, the condition is true. | (A != B) is true. |
| > | Checks whether the value of the left operand is greater than the value of the right operand; if so, the condition is true. | (A > B) is not true. |
| < | Checks whether the value of the left operand is less than the value of the right operand; if so, the condition is true. | (A < B) is true. |
| >= | Checks whether the value of the left operand is greater than or equal to the value of the right operand; if so, the condition is true. | (A >= B) is not true. |
| <= | Checks whether the value of the left operand is less than or equal to the value of the right operand; if so, the condition is true. | (A <= B) is true. |
Example
See the following examples to understand the relational operators available in C++.
Copy and paste the following C++ program into the test.cpp file, compile and run the program.
Example
When the above code is compiled and executed, it produces the following results:
Line 1 - a 不等于 b Line 2 - a 不小于 b Line 3 - a 大于 b Line 4 - a 小于或等于 b Line 5 - b 大于或等于 a
Logical Operators
The following table shows the logical operators supported by C++.
Assume variable A has a value of 1 and variable B has a value of 0, then:
| Operators | Description | Example |
|---|---|---|
| && | Called the logical AND operator. If both operands are true, then the condition is true. | (A && B) is false. |
| || | Called the logical OR operator. If either of the two operands is true, then the condition is true. | (A || B) is true. |
| ! | Called the logical NOT operator. It is used to reverse the logical state of an operand. If the condition is true, the logical NOT operator will make it false. | !(A && B) is true. |
Example
See the following examples to understand the logical operators available in C++.
Copy and paste the following C++ program into the test.cpp file, compile and run the program.
Example
When the above code is compiled and executed, it produces the following results:
Line 1 - 条件为真 Line 2 - 条件为真 Line 4 - 条件不为真 Line 5 - 条件为真
Bitwise Operators
Bitwise operators operate on bits and perform operations bit by bit. The truth tables of &, |, and ^ are as follows:
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Suppose A = 60 and B = 13. Now expressed in binary format, they are as follows:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
The following table shows the bitwise operators supported by C++. Assume variable A has a value of 60 and variable B has a value of 13, then:
| Operators | Description | Example |
|---|---|---|
| & | Bitwise AND operation. Performs an "AND" operation on binary bits. Operation rules: 0&0=0; 0&1=0; 1&0=0; 1&1=1; | (A & B) evaluates to 12, which is 0000 1100. |
| | | Bitwise OR operator. Performs an "OR" operation on binary bits. Operation rules: 0|0=0; 0|1=1; 1|0=1; 1|1=1; | (A | B) evaluates to 61, which is 0011 1101. |
| ^ | XOR operator. Performs an "XOR" operation on binary bits. Operation rules: 0^0=0; 0^1=1; 1^0=1; 1^1=0; | (A ^ B) evaluates to 49, which is 0011 0001. |
| ~ | Bitwise NOT operator. Performs an "inversion" operation on binary bits. Operation rules: ~1=-2; ~0=-1; | (~A) will give -61, which is 1100 0011, the two's complement form of a signed binary number. |
| << | Binary left shift operator. Shifts all binary bits of an operand to the left by a certain number of positions (the leftmost binary bits are discarded, and 0s are filled in on the right). | A << 2 evaluates to 240, which is 1111 0000. |
| >> | Binary right shift operator. Shifts all binary bits of a number to the right by a certain number of positions. For positive numbers, 0s are filled on the left; for negative numbers, 1s are filled on the left; the bits on the right are discarded. | A >> 2 evaluates to 15, which is 0000 1111. |
Example
See the following examples to understand the bitwise operators available in C++.
Copy and paste the following C++ program into the test.cpp file, compile and run the program.
Example
When the above code is compiled and executed, it produces the following results:
Line 1 - c 的值是 12 Line 2 - c 的值是 61 Line 3 - c 的值是 49 Line 4 - c 的值是 -61 Line 5 - c 的值是 240 Line 6 - c 的值是 15
Assignment Operators
The following table lists the assignment operators supported by C++:
| Operators | Description | Example |
|---|---|---|
| = | Simple assignment operator. Assigns the value of the right operand to the left operand. | C = A + B will assign the value of A + B to C. |
| += | Addition assignment operator, adds the right operand to the left operand and assigns the result to the left operand. | C += A is equivalent to C = C + A. |
| -= | Subtraction assignment operator, subtracts the right operand from the left operand and assigns the result to the left operand. | C -= A is equivalent to C = C - A. |
| *= | Multiplication assignment operator, multiplies the right operand by the left operand and assigns the result to the left operand. | C *= A is equivalent to C = C * A. |
| /= | Division assignment operator, divides the left operand by the right operand and assigns the result to the left operand. | C /= A is equivalent to C = C / A. |
| %= | Modulo and assignment operator. Takes the modulus of two operands and assigns it to the left operand. | C %= A is equivalent to C = C % A. |
| <<= | Left shift and assignment operator. | C <<= 2 is equivalent to C = C << 2. |
| >>= | Right shift and assignment operator. | C >>= 2 is equivalent to C = C >> 2. |
| &= | Bitwise AND and assignment operator. | C &= 2 is equivalent to C = C & 2. |
| ^= | Bitwise XOR and assignment operator. | C ^= 2 is equivalent to C = C ^ 2 |
| |= | Bitwise OR and assignment operator. | C |= 2 is equivalent to C = C | 2 |
Example
See the following examples to understand the assignment operators available in C++.
Copy and paste the following C++ program into the test.cpp file, compile and run the program.
Example
When the above code is compiled and executed, it produces the following results:
Line 1 - = 运算符实例,c 的值 = 21 Line 2 - += 运算符实例,c 的值 = 42 Line 3 - -= 运算符实例,c 的值 = 21 Line 4 - *= 运算符实例,c 的值 = 441 Line 5 - /= 运算符实例,c 的值 = 21 Line 6 - %= 运算符实例,c 的值 = 11 Line 7 - <<= 运算符实例,c 的值 = 44 Line 8 - >>= 运算符实例,c 的值 = 11 Line 9 - &= 运算符实例,c 的值 = 2 Line 10 - ^= 运算符实例,c 的值 = 0 Line 11 - |= 运算符实例,c 的值 = 2
Miscellaneous Operators
The following table lists some other important operators supported by C++.
| Operators | Description |
|---|---|
| sizeof | sizeof operatorReturns the size of a variable. For example, sizeof(a) will return 4, where a is an integer. |
| Condition ? X : Y | Conditional operatorIf Condition is true ? then the value is X : otherwise the value is Y. |
| , | Comma OperatorIt executes a series of operations in sequence. The value of the entire comma expression is the value of the last expression in the comma-separated list. |
| . (dot) and -> (arrow) | Member operatorUsed to reference members of classes, structures, and unions. |
| Cast | Cast operatorConverts one data type to another data type. For example, int(2.2000) will return 2. |
| & | Pointer operator &Returns the address of a variable. For example, &a; will give the actual address of the variable. |
| * | Pointer operator *Points to a variable. For example, *var; will point to the variable var. |
Operator precedence in C++
Operator precedence determines the grouping of terms in an expression. This affects how an expression is evaluated. Some operators have higher precedence than others; for example, multiplication and division operators have higher precedence than addition and subtraction operators.
For example, x = 7 + 3 * 2. Here, x is assigned 13, not 20, because the operator * has higher precedence than +, so the multiplication 3*2 is calculated first, and then 7 is added.
The following table lists the operators in order of precedence from high to low. Operators with higher precedence appear at the top of the table, and operators with lower precedence appear at the bottom. In an expression, operators with higher precedence are evaluated first.
| Category | Operators | Associativity |
|---|---|---|
| Postfix | () [] -> . ++ - - | Left to right |
| Unary | + - ! ~ ++ - - (type)* & sizeof | Right to left |
| Multiplicative | * / % | Left to right |
| Additive | + - | Left to right |
| Shift | << >> | Left to right |
| Relationship | < <= > >= | Left to right |
| Equality | == != | Left to right |
| Bitwise AND | & | Left to right |
| Bitwise XOR | ^ | Left to right |
| Bitwise OR | | | Left to right |
| Logical AND | && | Left to right |
| Logical OR | || | Left to right |
| Conditions | ?: | Right to left |
| Assignment | = += -= *= /= %=>>= <<= &= ^= |= | Right to left |
| comma | , | Left to right |
Example
See the following examples to understand operator precedence in C++.
Copy and paste the following C++ program into the test.cpp file, compile and run the program.
Compare the difference between having parentheses and not having parentheses, which will produce different results. Because (), /, *, and + have different precedence levels, operators with higher precedence will be evaluated first.
Example
When the above code is compiled and executed, it produces the following results:
(a + b) * c / d 的值是 90 ((a + b) * c) / d 的值是 90 (a + b) * (c / d) 的值是 90 a + (b * c) / d 的值是 50other extensions