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

C语言短路运算符的语句判定逻辑及代码运行结果疑问

C语言短路运算符与优先级的执行逻辑解析

先看你贴的代码:

int main()
{
    int a=5,b=8,c=0,d=1;
    printf("%d\n",(a+b)%d&&d++||c++);
    printf("%d %d",c,d);
    return 0;
}

你纠结的点是优先级和短路逻辑的结合,这里一步步拆明白:

  • 首先明确:C语言里&&的优先级确实比||高,所以表达式(a+b)%d&&d++||c++会被强制分组成 ((a+b)%d && d++) || c++,这部分你的判断没错。
  • 然后按短路规则逐步执行:
    • 先算(a+b)%d:5+8=13,d=1,13模1的结果是0(逻辑假)。
    • 执行&&运算:因为左侧是0(假),短路规则直接生效,右侧的d++根本不会运行,d的值保持1不变。此时(a+b)%d && d++的整体结果是0。
    • 执行||运算:左侧结果是0(假),没法直接得出整个表达式的结果,所以必须执行右侧的c++,c从0变成1,整个||表达式的结果是1(逻辑真)。

所以程序最终输出是:

1
1 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 13:15:54