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

为何条件运算符简化版与if-else展开版代码输出不同?

两段C代码输出差异的原因

核心区别一句话就能说清:第一段代码给变量a赋了新值,第二段代码里a自始至终都是初始的0。

第一段代码的执行逻辑

代码:

int a = 0;
a = 7 > 2 ? printf("6") : printf("4");
printf ("%d",a);

printf函数的返回值是成功打印的字符个数,这里打印"6"是1个字符,所以printf("6")会返回1。
因为7>2为真,条件运算符会执行printf("6"),同时把它的返回值1赋值给a。最终先输出"6",再输出a的值1,拼起来就是61。

第二段代码的执行逻辑

代码:

int a = 0  ;
if(7>2)
{
    printf("6");
}
else
{
    printf("4");
}
printf("%d",a);

这段里if分支只做了打印"6"的操作,完全没对a进行重新赋值,a一直保持初始的0。所以先输出"6",再输出a的0,拼起来就是60。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:35:19