Skip to main content

运算符

杂项运算符

sizeof  sizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。

Condition ? X : Y 条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。

, 逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。

.(点)和 ->(箭头) 成员运算符用于引用类、结构和共用体的成员。

Cast 强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。

& 指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。

* 指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。

位运算符

&

按位与操作,按二进制位进行"与"运算。运算规则:

0&0=0;   
0&1=0;
1&0=0;
1&1=1

|

按位或运算符,按二进制位进行"或"运算。运算规则:

0|0=0;   
0|1=1;
1|0=1;
1|1=1;

异或运算符,按二进制位进行"异或"运算。运算规则:

0^0=0;   
0^1=1;
1^0=1;
1^1=0;

~

取反运算符,按二进制位进行"取反"运算。运算规则:

~1=-2;   
~0=-1;

<<

二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。

>>

二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

#include <iostream>
using namespace std;
int main()
{
unsigned int a = 60; // 60 = 0011 1100
unsigned int b = 13; // 13 = 0000 1101
int c = 0;

c = a & b; // 12 = 0000 1100
cout << "Line 1 - c 的值是 " << c << endl ;

c = a | b; // 61 = 0011 1101
cout << "Line 2 - c 的值是 " << c << endl ;

c = a ^ b; // 49 = 0011 0001
cout << "Line 3 - c 的值是 " << c << endl ;

c = ~a; // -61 = 1100 0011
cout << "Line 4 - c 的值是 " << c << endl ;

c = a << 2; // 240 = 1111 0000
cout << "Line 5 - c 的值是 " << c << endl ;

c = a >> 2; // 15 = 0000 1111
cout << "Line 6 - c 的值是 " << c << endl ;

return 0;
}
/*
Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15
*/

赋值运算符

= += 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A -= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A = 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C = A 相当于 C = C * A /= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A

<<= 左移且赋值运算符    C <<= 2 等同于 C = C << 2
>>= 右移且赋值运算符 C >>= 2 等同于 C = C >> 2
&= 按位与且赋值运算符 C &= 2 等同于 C = C & 2
^= 按位异或且赋值运算符 C ^= 2 等同于 C = C ^ 2
|= 按位或且赋值运算符 C |= 2 等同于 C = C | 2