(bool)(i& 1)和i%2 == 1相同吗?

时间:2011-06-22 10:31:03

标签: c++ c cross-platform

(bool)(i & 1)i % 2 == 1总是在i int的位置相同吗?

注意:总是说我的意思是所有平台(即使字节是16位)以及所有C和C ++标准。

修改

对于存在bool的所有C和C ++标准。

2 个答案:

答案 0 :(得分:49)

没有

int的1s'补码表示,-1的表示为1 ... 10,因此它们不同。

无论如何,i % 2对于负i可以为负(事实上,当它不为0时,它必须在C99中),因此对于负奇数不等于1。

答案 1 :(得分:9)

没有。

例如,如果我是-1,请尝试。 -1 % 2 == -1(bool) (-1 & 1)为1。

(假设2补语)