(bool)(i & 1)
和i % 2 == 1
总是在i
int
的位置相同吗?
注意:总是说我的意思是所有平台(即使字节是16位)以及所有C和C ++标准。
修改
对于存在bool
的所有C和C ++标准。
答案 0 :(得分:49)
没有
int
的1s'补码表示,-1的表示为1 ... 10
,因此它们不同。
无论如何,i % 2
对于负i
可以为负(事实上,当它不为0时,它必须在C99中),因此对于负奇数不等于1。
答案 1 :(得分:9)
没有。
例如,如果我是-1,请尝试。 -1 % 2 == -1
,(bool) (-1 & 1)
为1。
(假设2补语)