4.1基础

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()
  • 结合律规定:将f()的结果加上g()*f()的结果,再与j()相加
  • 对于这些函数的调用顺序没有明确的规定。

如果这几个函数之间是无关的,那么调用顺序不受限制,如果之间的几个函数受到同一对象影响,则会产生未定义行为

学会使用()

猜你喜欢

转载自www.cnblogs.com/Mayfly-nymph/p/9063612.html
今日推荐