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

关于If-Else语句中布尔变量逻辑的疑问(闰年判断场景)

闰年判断代码逻辑解惑

首先先还原你代码的大致结构(从描述可推断):

#include <iostream>
using namespace std;

int main() {
    bool isLeapYear = false;
    int year = 50;

    // 判断闰年的两个核心条件
    if (year % 4 == 0 && year % 100 != 0) {
        isLeapYear = true;
    }
    if (year % 400 == 0) {
        isLeapYear = true;
    }

    // 输出结果
    if (isLeapYear) {
        cout << "是闰年" << endl;
    } else {
        cout << "不是闰年" << endl;
    }
    return 0;
}

你疑惑的核心点:输入非闰年(如50)时,前两个条件分支都没触发,isLeapYear保持初始的false,为什么最后一个if不会错误输出“是闰年”?

答案很直白:最后这个if的逻辑是「当isLeapYear为true时才输出“是闰年”」。咱们一步步走一遍50这个例子:

  • 初始isLeapYear = false;
  • 第一个if:50除以4余2,不满足条件,跳过,isLeapYear仍为false;
  • 第二个if:50除以400余50,不满足条件,跳过,isLeapYear还是false;
  • 最后判断if (isLeapYear)等价于判断if (false),条件不成立,自然就执行else分支,输出“不是闰年”,完全符合预期。

你可能是误把最后这个if的逻辑搞反了——它本身就只在变量为true时才会输出闰年信息,非闰年时变量保持初始的false,刚好触发else分支,所以结果才正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:57:12