c++ - 查找有符号整数和无符号整数是偶数还是奇数

标签 c++ c++11 c++14

我有一个 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 的符号如何,这都有效,因为该表达式的结果将始终是 01

关于c++ - 查找有符号整数和无符号整数是偶数还是奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45222736/

相关文章:

c++ 范围的排序 View - 如何创建 const_iterator?

c++ - 用spirit x3解析递归规则

c++ - 具有交错法线的 VertexBufferObject

c++ - std::numeric_limits<double>::epsilon() 可以用来做什么?

c++ - 如何在 C++ 应用程序中自动检查菜单的完整性?

c++ - 寻找设计模式以减少虚拟方法的重载

c++ - 从 C 字符串构造 boost::type_erasure::any 但存储为 std::string

c++ - 复制对象时,带有 MSVC 2010 Debug 的 OpenMP 会生成奇怪的错误

c++ - 如何将 C++ 11 导入 eclipse neon?我的代码出现错误,我听说这是解决方案。

c++ - 模板类的实例化点