C/C++面试中经常让计算一个表达式的值
计算一个表达式的值的时候,一定要具有以下的基础知识。
1、
2、同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
3、
同一优先级的运算符,运算次序由结合方向所决定。
口诀:
(1)
括号成员第一; //括号运算符 成员运算符. ->
(2)全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&
(3)乘除余三,加减四; //这个"余"是指取余运算即%
(4)移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
(5)等于(与)不等排第七; //即== 和!=
(6)位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)
(7)"三分天下"八九十;
(8)逻辑或跟与; //逻辑运算符:|| 和 &&
十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)
(9)条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高
(10)逗号运算级最低! //逗号运算符优先级最低
4、
等级规则
转换规则:
如:下面代码输出什么
#include<stdio.h>
int main( )
{
unsigned int a = 6;
int b = -20;
(a + b > 6) ? printf(">6") : printf("<=6");
return 0;
}
运行结果:>6
因为signed int 转换成了unsigned int。转换过程见另一个博文:C语言的int类型与unsigned int运算的问题