我有一个 int m
和一个 unsigned int j
并且想确定它们是偶数还是奇数。
过去我一直在使用
if((int(j)+m)%2)
捕捉只有一个是奇数的情况。但我担心转换为 int
会错误地改变 j
的奇偶性。
这些都会遇到问题吗?
if(!(j%2)!=!(m%2))
if(bool(j%2)!=bool(j%2))
我知道
if(j%2!=m%2)
不起作用,因为当 m
为负数时,'m%2' 将产生 -1
,这将始终评估为 true
no不管 j%2
的值是多少。
最佳答案
不要使用 %
。这是一个需要位掩码的问题:
bool same_parity = (i & 0x1) == (j & 0x1);
无论 i
的符号如何,这都有效,因为该表达式的结果将始终是 0
或 1
。
关于c++ - 查找有符号整数和无符号整数是偶数还是奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45222736/