Mat*_*rba 5 c++ operator-precedence conditional-statements
如果我想为变量分配一个新值并检查新值是否与旧值相同,我倾向于避免使用临时变量.我可以这样做:
if (oldval == (oldval = new_value()))
{
... do something
}
Run Code Online (Sandbox Code Playgroud)
?
这种行为是明确定义还是评估优先级语言或编译器依赖?我可以尝试这个并查看结果,但它不能保证它也能在其他系统上运行.我在C++中这样做,所以这是我最感兴趣的语言,但如果行为在其他语言中是一致的(或不一致的),我想知道.
谢谢!
这将是未定义的行为,因为对于使用值(即左侧的评估)的值计算oldval,对其发生的写入oldval = new_value()是未序的.oldval==
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |