求解C语言中的一问题t=a;a=b;b=t
我在学习C语言中每碰到像t=a;a=b;b=t;这类的语句就觉得蛮别扭,也好像是学数学学的转不过弯来,常理认为对于t只赋了一个值,但却出现t=a;后又出现b=t的形式,这...
我在学习C语言中每碰到像t=a;a=b;b=t;这类的语句就觉得蛮别扭,也好像是学数学学的转不过弯来,常理认为对于t只赋了一个值,但却出现t=a;后又出现b=t的形式,这不就是对t赋了两个值吗?哎!看不懂,哪位高手能帮我释疑啊?这里面是什么原理啊?
展开
8个回答
展开全部
if语句如果没有大括号
默认只有一个跟随语句;
也就是说在你的第一个例子中,if语句成立
则t=a;会被执行,而a=b;b=t;什么情况下都会被执行。
而第二个例子中加了大括号,被认为是一个整体,所以if的判断条件成立与否决定了大括号里面的所有语句的执行与否。
默认只有一个跟随语句;
也就是说在你的第一个例子中,if语句成立
则t=a;会被执行,而a=b;b=t;什么情况下都会被执行。
而第二个例子中加了大括号,被认为是一个整体,所以if的判断条件成立与否决定了大括号里面的所有语句的执行与否。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这三个语句是a,b互换值的经典语句,其实很好明白。
t其实相当于一个临时储存的东西,先把a的值放在t那里,然后a去取b的值;
然后b再取t的值(即a的初值)。
“但却出现t=a;后又出现b=t的形式,这不就是对t赋了两个值吗?”
赋值号只对左值有效,所以这里只对t赋了一次值,为什么给t赋值呢?因为要存放a的值,不然a直接等于b后,b就找不到a当初的值了。
应该明白了吧。
t其实相当于一个临时储存的东西,先把a的值放在t那里,然后a去取b的值;
然后b再取t的值(即a的初值)。
“但却出现t=a;后又出现b=t的形式,这不就是对t赋了两个值吗?”
赋值号只对左值有效,所以这里只对t赋了一次值,为什么给t赋值呢?因为要存放a的值,不然a直接等于b后,b就找不到a当初的值了。
应该明白了吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,T=A 把A保存到T里面。
再来,A=B,A的值等于B的值(现在A变了,但是T还没变,仍是没变前A的值)
最后,B=T,令B=T,因为T保存的是A没变前的值,所以相当于AB两个值 交换了
X=Y:表示对X赋值,值为Y的值。。。
明了吧..
再来,A=B,A的值等于B的值(现在A变了,但是T还没变,仍是没变前A的值)
最后,B=T,令B=T,因为T保存的是A没变前的值,所以相当于AB两个值 交换了
X=Y:表示对X赋值,值为Y的值。。。
明了吧..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是这样的,这是高二数学的程序框图里的,如果你这三个赋值是一起的,就表示:t=a就是t的值转到a上,然后a的值(其实就是刚刚的t值,又转到了b上,最后b值又转回t上,还是原来的值,这和S=S+i是一个道理,每次S+i得到的值都重新被赋到S上,也就是之前的S值就没有了。
不知道你听懂么?
不知道你听懂么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询