恩,是2啊。C语言规定,如果IF后面没有{},那就只包括IF后面的那条语句,但由于这道题IF后面还是IF ELSE语句(他们是一条语句)。所以相当于
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);
}
第一个if条件就不符合了,所以直接执行最后的输出语句,所以是2
加上{} 你就非常容易明白
main( )
{
int a=3,b=4,c=5,d=2;
if (a>b)
{ // a if (b>c)
printf("%d",d++ + 1);
}
else
{
printf("%d",++d + 1); //++d后 d==3 然后d+1输出就是4
}
}
答案是2.
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);
}
因为aelse与最近的if搭配。
楼主你运行是4??可是刚我运行了下结果是2
个人看法此题可以如下添加括号,不影响结果
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);
}
这样添加括号的原因在于,else与相邻最近的if相匹配,所以结果是2,若是与题目答案不符,只能是你贴错了,或是题目错了。望能帮助楼主
答案当然是四了啊
if假设的条件根本不成立只是d本身自增然后加一结果肯定是四啊