C++primer学习笔记-求值顺序

求值顺序

大多数情况下不会指定求值顺序

对于那些没有指定执行顺序的运算符来说,如果表达式指向并修改同一个对象,将会引发错误并产生未定义行为

// << 运算符没有明确规定何时对运算对象求值
int i = 0;
cout<< i << " "<< ++i <<endl; // 未定义的 

因为上诉程序是未定义的原因**,编译器可能先求++i的值再求i的值**,或则先求i的值然后再求++i的值,甚至编译器还可能做出完全不同的操作.因此表达式的行为不可预知。

四种运算符明确规定了运算对象的求值顺序

(只有当左侧运算对想法的值运行完了之后才运行右侧的).

  • &&
  • ||
  • ?:

处理复合表达式建议:

  1. 拿不准时用括号
  2. 如果改变了一个运算对象的值,在表达式的其他地方就不要在使用这个运算对象(当改变运算对象的子表达式本身就是另外一个子表达式的运算对象时,是可以的 如:*++iter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值