为什么结果是2,而不是43

来源:百度知道 编辑:UC知道 时间:2024/06/08 21:57:06
#include <stdio.h>
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);}
是错了哇你。。

main()
{
if(a>b)
{
if(b>c)
{
printf("%d",d++ +1);
}
else
{
printf("%d",d++ +1);
}
}
printf("%d\n",d);

}

加了大括号应该比较清楚了吧
else就近原则 和最近的if配对

当然是2啦,else是给离他最近的上面一个IF配的。
这是C语言里的一个语法,记的就好了,
所以第一个IF以后就直接最后一句输出了。

printf("%d",++d+1); 输出 4
printf("%d\n",d); 输出 3\n

…… 诶,我错了

if(a>b)这里条件不成立后。。
中间嵌套的if语句是不执行的。
执行printf("%d\n",d);
所以结果是2