算数运算符
- 加减乘除
+ - * /
1 2 3 4
| int sum = a + b; int sum = a - b; int sum = a * b; int sum = a / b;
|
- 取模运算
%
理解为做除法得到的余数,例如7 / 2 = 3…1,1 = 7 % 2
赋值运算符
- 直接赋值
=
令a的值为1
- 复合赋值
+= -= *= /=
1 2 3 4
| x += 3; x -= 2; x *= 4; x /= 2;
|
比较运算符
== != > < >= <=
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 等于 (==):判断两个值是否相等。 if (a == b) { }
不等于 (!=):判断两个值是否不相等。 if (a != b) { }
大于 (>):判断左侧值是否大于右侧值。 if (a > b) { }
小于 (<):判断左侧值是否小于右侧值。 if (a < b) { }
大于等于 (>=) 和 小于等于 (<=): if (a >= b) { } if (a <= b) { }
|
逻辑运算符
&& || !
1 2 3 4 5 6 7 8
| 与 (&&):当且仅当两个操作数都为真时,结果为真。 if (a > 0 && b > 0) { }
或 (||):只要有一个操作数为真,结果就为真。 if (a > 0 || b > 0) { }
非 (!):取反操作符,返回布尔值的相反值。 if (!isValid) { }
|
位运算符
- 按位与
&
对两个数在二进制下进行与运算,只有对应位都为1时结果才为1
1 2 3
| int a = 13; int b = 11; int result = a & b;
|
- 按位或
|
对两个数在二进制下进行或运算,只要对应位与自身有一个为1,结果就为1
1 2 3
| int a = 5; int b = 3; int result = a | b;
|
- 按位异或
^
对两个数在二进制下进行异或运算,当对应位不同时(一个为1一个为0)结果为1
1 2 3
| int a = 5; int b = 3; int result = a ^ b;
|
- 左移
<<
将一个数的二进制数向左移动指定的位数,右侧补0
1 2
| int a = 5; int result = a << 1;
|
- 右移
>>
将一个数的二进制数向右移动指定的位数,右侧补0
1 2
| int a = 5; int result = a >> 1;
|
三目运算符
?: 根据条件不同返回不同的值
1 2
| int result = (a > b) ? a : b; ?前为一个布尔型变量进行真假判断,为真返回:前面的值,为假返回:后面的值
|
指针运算符
- 地址运算符
&
获取变量的地址
1 2
| int x = 10; int* ptr = &x;
|
- 解引用运算符
*
访问指针所指向的变量的值
1 2 3 4
| int x = 10; int* ptr = &x; int value = *ptr; *ptr = 20;
|
- 指针的自加或自减
++ --
1 2 3 4
| int arr[] = {1, 2, 3, 4}; int* ptr = arr; ptr++; int second = *ptr;
|
其他运算符
- 自增
++
将变量加1
这里我们这样理解,一个是执行完之后自增,一个是先自增再执行
1 2 3 4
| int a = 5; int b = a++; int a = 5; int b = ++a;
|
所以我们定义一个cnt记录数组长度时,经常这样,cnt即为数组长度
1 2
| int cnt = 0; a[++cnt] = number;
|
当然你也可以这样,前后同一索引代表的元素一样,不过这里cnt-1为数组长度
1 2
| int cnt = 1; a[cnt++] = number;
|
- 自减少
--