HBP*_*HBP 4 c++ java puzzle swap inline
我被要求在不使用临时变量或使用xor的情况下编写交换,我想出了这个.
在Java中,这可行,但在C/C++中,这不起作用.
我的印象是,由于'|'左侧'a'的值,这总是有效的 将被存储在寄存器中,然后分配给'a'将否定对'b'的指定值的影响.
int a = 5;
int b = -13;
b = a | (0 & (a = b));
Run Code Online (Sandbox Code Playgroud)
Ben*_*ley 10
您正在修改变量并读取其值而没有插入序列点.
b = a + 0 * (a = b);
// reading a's value modifying a
Run Code Online (Sandbox Code Playgroud)
这是未定义的行为.您无权对代码的作用有任何期望.
| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |