int main()
{
int var = 1;
var += ++var;
cout<<var;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在Java中,这将按预期输出3,但在C++(上面)中输出4.为什么?
因为这是未定义的行为.您正在修改和访问相同的变量而没有插入序列点,因此结果实际上取决于编译器.如果你用clang编译它,你会看到:
unsequenced modification and access to 'var'
Run Code Online (Sandbox Code Playgroud)
我实际上得到4作为答案,但它同样可以是3,7,123125123或"龙虾".
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |