int a=3,b=4,c=5,d=2; if(a>b) if(b>c) printf("%d",d++ +1); else printf("%d",++d +1); printf("%d",d);

这个的结果为什么是43,??

这个结果应该是33吧,
因为上面两个if语句都成立,所以第一次输出的d++ +1=3、第二次输出的d是最后一个printf语句,因为上面d已经自加1了,所以输出d为3,所以两次d输出的都是3
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-05-21
main()
{ int a=3,b=4,c=5,d=2;
if(a<b)
if(b<c)
printf("%d",d+++1);
else
printf("%d",++d+1);
printf("%d\n",d);
}
你们可能会遇见这样的程序,很多人机器出来的结果是33,但是就是不知道为什么是33,先a<b为真,然后执行下面的语句,b<c为真所以执行第一个d+++1,也就是d++再+1,结果为3(为什么等于3,C语言配套的书上有相关知识点不用我说了吧),然后if执行结束,最后不能忘了还有一个printf("%d\n",d);很多人会说为什么最后结果为33,这个最后的语句就是答案。那么楼主提的问题跟我这个相似,就交给你们自己总结了,加油
第2个回答  推荐于2018-04-06
int a=3,b=4,c=5,d=2;
if(a>b)
if(b>c) printf("%d",d++ +1);
else printf("%d",++d +1);
printf("%d",d);
不可能是43,应该是2追问

不是的,我是在电脑上做的,结果是43 ,我自己算的是2 ,谁有详解啊?++d +1这是啥意思啊 ??!!

追答

a>b不成立,故程序直接执行printf("%d",d); 所以输出2.

++d等于3
3+1等于4

追问

不是的,a>b,不成立,就执行else 语句,然后再到printf,我也不知道啊!我是刚接触C语言,现在入门都还是个问题啊,需要高手指引啊!!

追答

if(b>c) printf("%d",d++ +1);
else printf("%d",++d +1);
它们俩才是两口子!

本回答被网友采纳
第3个回答  2011-05-25
不可能吧
a>b 显然不成立就会直接执行printf("%d",d);这句了本回答被网友采纳
第4个回答  2011-05-25
请问你使用的是什么编译器(gcc还是msvc)追问

不知道啊!

追答

唉,服了

追问

呵呵。。。