You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++判断奇偶的位运算逻辑异常问题求助

代码问题排查与修正

核心问题点

  • 奇偶判断逻辑错误:你用mod = number&2来判断奇偶是完全错误的。位运算判断奇偶应该用number&1——二进制最低位为1时是奇数,为0时是偶数。&2是取二进制第二位,会导致大部分数字的mod结果既不是0也不是1,触发最后的错误分支,这就是程序逻辑异常的根源。
  • 负数处理不合理:负数同样可以判断奇偶,不需要直接输出无法判断的提示,应该和正数统一处理。
  • 笔误问题:代码里的idiom是even的笔误,需要替换。
  • 未处理输入异常:如果输入非数字,cin会进入错误状态,导致循环无法正常结束,需要添加错误处理逻辑。

修正后的代码

#include<iostream>
#include<limits> // 用于清空输入缓冲区
using namespace std;

int main (){
    int number;
    bool done = false;
    do{
        cout << endl << "Enter a number (0 to exit):" << endl;
        // 处理输入非数字的情况
        if (!(cin >> number)) {
            cout << "Invalid input! Please enter an integer." << endl;
            cin.clear(); // 重置错误状态
            cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 清空缓冲区
            continue;
        }
        
        if (number == 0){
            done = true;
        } else {
            int mod = number & 1;
            if (mod == 1){
                cout << "This number is odd";
            } else {
                cout << "This number is even";
            }
        }
    } while(!done);
    return 0;
}

内容的提问来源于stack exchange,提问作者Atahan Demirer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:37:19