4.1.1基本概念
1.左值,右值:
int a = 5;//a为左值 char c = "hello";//hello为右值
当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。
4.1.2 优先级与结合律
~
4.1.3 求值顺序
小心未定义行为,例如:
int i = 0; cout << i << " " << ++i << endl;//未定义行为
计算机可能先执行 i 再执行 ++i ,也可能先执行 ++i 再执行 i;
运算对象的求值顺序与优先级和结合律无关,如:f() + g() * h() + j()
- 优先级规定:先算g() * h()
扫描二维码关注公众号,回复:
951469 查看本文章
- 结合律规定:将f()的结果加上g()*f()的结果,再与j()相加
- 对于这些函数的调用顺序没有明确的规定。
如果这几个函数之间是无关的,那么调用顺序不受限制,如果之间的几个函数受到同一对象影响,则会产生未定义行为
学会使用()