最稳妥的奇偶判断方式是用 n % 2 == 0 判断偶数,否则为奇数;负数下位运算 n & 1 不可移植,仅当 n >= 0 时安全;% 不适用于浮点数,需先转整型;输入未校验时易误判,应先确保转换成功。
用 % 判断奇偶是最直接的方式
在 C++ 中,对整数 n 执行 n % 2,结果为 0 就是偶数,1 或 -1 就是奇数。但注意:负数取模结果依赖编译器实现(C++98/03),C++11 起规定 a % b 符号与被除数 a 一致,所以 -5 % 2 是 -1,不是 1。
实际判断时别直接写 if (n % 2 == 1),它会漏掉负奇数。稳妥写法是:
if (n % 2 == 0) {
// 偶数
} else {
// 奇数(涵盖正、负、非零)
}
用位运算 & 更快,但只适用于无符号或非负整数
n & 1 是检查最低位是否为 1,效率比取模高,且不涉及除法逻辑。但它对负数的行为取决于底层补码表示和编译器解释——虽然大多数平台下 -3 & 1 得 1,但标准未保证负数的位运算结果可移植。
- 如果确定
n >= 0,if (n & 1)安全又高效 - 若
n可能为负,优先用%并按上一条方式判断 -
unsigned int类型下& 1总是可靠
小心浮点数、字符、枚举等类型误用 %
% 是整型运算符,不能直接用于 float 或 double,否则编译报错:invalid operands to binary %。想判断浮点数“整数部分”奇偶,得先转整型(注意截断方向):