C++的问题,帮忙解决一下吧!

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:38:20
#include<stdio.h>
void main()
{
int x=10,y=20,t=0;
if(x==y)
t=x;
x=y;
y=t;
printf("%d,%d\n",x,y);
}
20,0
Press any key to continue
为什么会是20,0呢??一直不明白.我认为是10,20,但是我是错的,错在哪里了?
if后面的()内的表达式是假,不是不执行if后面的语句吗??即使执行了if后面
的语句,得到的结果是20,10 也不应该是20,0啊!到底是咋回事呢??

结果是20,0 没有错误 o(∩_∩)o

过程如下:
1.执行赋值操作 int x=10,y=20,t=0;
2.if(x==y)
t=x; 这里有个分号,说明是一个语句。明显x,y不相等,所以不 执行if后面的语句 t=x ;
3.x=y; //把y的值20赋给x,这样x的值变为20
y=t; //把t的值0赋给y,这样y的值变为0
printf("%d,%d\n",x,y); //打印输出x,y 结果x为20,y为0

关键点:if(x==y)
t=x; // ;代表语句的结束,if的范围只管到此处
————————————————
x=y;
y=t;

if(x==y)的确为假,但是注意这里
t=x;
x=y;
y=t;
没有括号,不是
{t=x;
x=y;
y=t;}
所以只不执行下面一句:t=x;而之后的x=y;y=t;还是要执行

if(x==y) t=x;
x=y;
y=t;
想要结果为20.10,就加上两个花括号

if(x==y){
t=x;
x=y;
y=t;
}

if(x==y)的确为假,但是注意这里
t=x;
x=y;
y=t;
没有括号,不是
{t=x;
x=y;
y=t;}
所以只不执行下面一句:t=x;而之后的x=y;y=t;还是要执行

因为 if 后面没有{}