下面这个C语言题目答案为什么是这样的?

来源:百度知道 编辑:UC知道 时间:2024/07/07 19:02:47
题目如下:
#include "stdio.h"
main()
{
int x,y;
x=y=2;
if(x==1)
if(x==2)
printf("x=%d\n",x=x+y);
else
printf("x=%d\n",x=x-y);
printf("x=%d\n",x);
}
答案是:x=2
疑问:答案为什么是2呢,不是4吗?求高人指点,谢谢!

我理解代码是被这样运行的:

main()
{
int x,y;
x=y=2;
if(x==1)
{
if(x==2)
printf("x=%d\n",x=x+y);
else
printf("x=%d\n",x=x-y);
}
printf("x=%d\n",x);
}

实际上这段代码没有被执行

前面有 x=y=2呀,而且后面没有对变量x进行修改!

int x,y;
x=y=2;
if(x==1) //这里x不等于1所以不进入下面的if语句了,直接到else后面
if(x==2)
printf("x=%d\n",x=x+y);
else
printf("x=%d\n",x=x-y);
printf("x=%d\n",x); //直接跳到了这一步打印

#include "stdio.h"
main()
{
int x,y;
x=y=2;
if(x==1) //由于这一句,下面的if else语句都没有运行;

{if(x==2) //首先你应该知道这个if 和else 对着,就近取原则;
printf("x=%d\n",x=x+y);
else
printf("x=%d\n",x=x-y);
}

printf("x=%d\n",x); //这个x还是等于2的;
}

if(x==1) //x=2所以此条件不成立,下面的语句都不执行
if(x==2) //不执行
printf("x=%