pmu*_*ima -4 c++ variable-assignment while-loop
我尝试了x+=1,x=x+1在while循环的条件下.
x = 0 // Initial value of x
Run Code Online (Sandbox Code Playgroud)
第一个案例
while(x+=1 && x < 5){
cout << x << endl;
}
Run Code Online (Sandbox Code Playgroud)
第二个案例
while(x=x+1 && x < 5){
cout << x << endl;
}
Run Code Online (Sandbox Code Playgroud)
第一个案例和第二个案件令人费解.是什么在行为的区别x+=1和x=x+1这两个进入无限循环(由于短路).但是第一种情况下x的值被置于1.
有什么想法吗 ?
根据Is x + = 1比x = x + 1更有效吗?,大多数编译器(好)优化并做同样的事情.
我正在使用的编译器 - gcc版本5.4.0
你的困惑源于缺乏括号.您的表达式按顺序等效于以下内容:
(x++) && (x < 5) // First case
x+=(1 && (x < 5)) // Second case
x=((x+1) && (x < 5)) // Third case
Run Code Online (Sandbox Code Playgroud)
除了隐式转换等,这会产生您所看到的行为.
这就是我们使用括号,并在编译时启用警告的原因.
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |