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

(bool)(i & 1)i % 2 == 1总是相同, iint吗?

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

编辑:

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

没有。

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

无论如何, i % 2对于负i是负的(当它不是0时,它确实需要在C99中),因此对于负奇数不等于1。

没有。

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

(假设2补码)