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

关于C语言switch语句使用逻辑比较结果的可行性咨询

在C语言的switch表达式中使用逻辑比较结果是否可行?

这种写法是完全合法可行的。

在C语言里,逻辑表达式(比如day > 31 || month > 12)的求值结果是整数类型:当表达式为真时结果是1,为假时结果是0,而switch语句的表达式要求是整数类型(包括char、short、int等),所以完全符合语法要求。

看你提供的代码:

  • 当day > 31或者month > 12任意一个条件成立时,逻辑表达式结果为1,switch会匹配不到case 0,最终走default分支输出Invalid;
  • 当两个条件都不成立时,表达式结果为0,会进入case 0分支输出Valid,完全符合你的预期逻辑。

额外提示

  1. 虽然写法合法,但这种二分支场景用if-else可读性会更好,代码逻辑更直观:
if (day > 31 || month > 12) {
    printf("Invalid");
} else {
    printf("Valid");
}
  1. 你的scanf格式符有问题:如果要求用户输入dd_mm_yyyy格式的日期,当前的%hd%hd%hd无法正确解析下划线分隔的输入,应该改成scanf("%hd_%hd_%hd", &day, &month, &year);才能正确读取带下划线的日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:18:35