我被要求在不使用临时变量或使用xor的情况下编写交换,我想出了这个. 在Java中,这可行,但在C/C++中,这不起作用. 我的印象是,由于'|'左侧'a'的值,这总是有效的 将被存储在寄存器中,然后分配给'a'将否定对'b'的指定值的影响.
int a = 5; int b = -13; b = a | (0 & (a = b));
c++ java puzzle swap inline
c++ ×1
inline ×1
java ×1
puzzle ×1
swap ×1