优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
基本的优先级需要记住:
指针最优>单目运算>双目运算(如正负号)
先乘除(模),后加减。
先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.
逻辑运算最后计算。
printf计算参数时是从右往左压栈的。
运算所需变量为一个的运算符叫单目运算符,又叫一元运算符.
逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++, --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【sizeof】
运算所需变量为两个的运算符叫做双目运算符,例如+,-,*,/,%,<,>,>=,<=,==,!=,<<,>>,&,^,|,&&,||,=
eg1:
int a = 4;
//a += (a++);//输出9
//a += (++a);//输出10
//(a++) += a;//错误,表达式必须为可修改的左值
//(++a) += a;//输出10
(++a) += (a++);//输出11
cout << a<<endl;