📅  最后修改于: 2023-12-03 15:29:54.694000             🧑  作者: Mango
C++中的运算符用于执行各种操作,如算术、逻辑和关系运算。运算符可分为以下几类:
| 运算符 | 描述 | | --- | ---| | + | 加法 | | - | 减法 | | * | 乘法 | | / | 除法 | | % | 取余 |
int a = 10, b = 20;
int sum = a + b; // sum为30
int difference = a - b; // difference为-10
int product = a * b; // product为200
int quotient = b / a; // quotient为2
int remainder = b % a; // remainder为0
| 运算符 | 描述 | | --- | ---| | = | 简单的赋值运算符 | | += | 加法赋值运算符 | | -= | 减法赋值运算符 | | *= | 乘法赋值运算符 | | /= | 除法赋值运算符 | | %= | 取余赋值运算符 |
int a = 10;
a += 5; // 等价于 a = a + 5, a现在的值为15
a -= 3; // 等价于 a = a - 3, a现在的值为12
a *= 2; // 等价于 a = a * 2, a现在的值为24
a /= 4; // 等价于 a = a / 4, a现在的值为6
a %= 5; // 等价于 a = a % 5, a现在的值为1
| 运算符 | 描述 | | --- | ---| | ++ | 自增 | | -- | 自减 |
int a = 10;
a++; // a现在的值为11
a--; // a现在的值为10
注意:自增自减运算符可以放在变量的前面或后面,前后放置的区别参见下面的例子。
int x = 10;
int y = ++x; // x现在的值为11,y的值也为11(先自增再使用变量)
int z = x++; // x现在的值为12,z的值为11(先使用变量再自增)
关系运算符用于比较两个值的大小关系,返回值类型为bool类型,即true或false。
| 运算符 | 描述 | | --- | ---| | == | 相等 | | != | 不相等 | | > | 大于 | | < | 小于 | | >= | 大于等于 | | <= | 小于等于 |
int a = 10, b = 20;
bool result1 = (a == b); // result1为false
bool result2 = (a != b); // result2为true
bool result3 = (a > b); // result3为false
bool result4 = (a < b); // result4为true
bool result5 = (a >= b); // result5为false
bool result6 = (a <= b); // result6为true
逻辑运算符用于对bool类型的值进行操作,返回值类型为bool类型,即true或false。
| 运算符 | 描述 | | --- | ---| | && | 逻辑与(and) | | || | 逻辑或(or) | | ! | 逻辑非(not) |
bool p = true, q = false;
bool result1 = (p && q); // result1为false
bool result2 = (p || q); // result2为true
bool result3 = !p; // result3为false
位运算符用于对二进制数进行操作,其中&、|、^和~用于按位逻辑运算,<<和>>用于按位移位运算。
| 运算符 | 描述 | | --- | ---| | & | 按位与 | | | | 按位或 | | ^ | 按位异或 | | ~ | 按位取反 | | << | 左移位 | | >> | 右移位 |
unsigned int a = 60; // 60的二进制表示为0011 1100
unsigned int b = 13; // 13的二进制表示为0000 1101
unsigned int result;
result = a & b; // result为0000 1100
result = a \| b; // result为0011 1101
result = a ^ b; // result为0011 0001
result = ~a; // result为1100 0011
result = a << 2; // result为1111 0000
result = a >> 2; // result为0000 1111
int a = 10, b = 20;
int max = (a > b) ? a : b; // max为20
int size1 = sizeof(int); // size1为4(int类型在32位机器上占4个字节)
int size2 = sizeof(a); // size2为4(a是int类型,其大小为4个字节)
int sum = (a += 5, b += 10); // sum为30,a的值现在为15,b的值现在为30