int main() {
int a = 1;
int b, c, d, e;
cout << a << endl;//1 a = 1
b = a++;
cout << b << endl;//1 b = 1 a = 2
c = a--;
cout << c << endl;//2 c = 2 a = 1
d = ++a;
cout << d << endl;//2 d = 2 a = 2
e = --a;
cout << e << endl;//1 e = 1 a = 1
2.3. 条件表达式
<exp1>?<exp2>:<exp3>
唯一的三目运算符,不允许进行重载
只计算一个运动分量
如果<exp2>和<exp3>的值类型相同且均为左值,则该条件运算符表达式为左值表达式。
可以嵌套(满足就近原则)
2.4. 逗号表达式
也就是进行连续计算
<exp1>,<exp2>,...,<expn>
<expn>的值是逗号表达式的值
int a,b,c;
d = (a = 1,b = a + 2,c = b + 3)
//a = 1
//b = 3
//c = d = 6
如<exp n>为左值,则该逗号表达式为左值
2.5. 字位运算符表达式
对于整形数二进制位(bit)的操作,将整形数看做二进制序列
复位和置位进行操作
操作符名
操作符
参与运算元数
备注
按位取反
~
单目
-
按位与
&
双目
复位
按位或
|
双目
置位
异或
^
双目
-
对于异或^:
与全0的二进制串进行运算:不变
与全1的二进制串进行运算:取反
与本身的运算:清零
与同一个对象进行异或运算两次:还原,应用:进行加密
交换两个整数x和y:如何写函数
//允许中间变量
int t = x;
x = y;
y = t
//不允许中间变量
a = a ^ b
b = b ^ a
a = a ^ b
//或者
x = x + y
y = x - y
x = x - y