会C的大人进。。请教c语言简单问题。。。

来源:百度知道 编辑:UC知道 时间:2024/06/10 05:50:47
最近刚刚开始自学C
但是书上有些看不懂
请大人解释下。。。感激不尽。。。
1. 有下面表达式,(m=a>b)&&(n=c>d)
当a=1,b=2,c=3,d=4,m和n的原值为1时。。。。由于a>b的值为0,因此m=0,而n=c>d不被执行。。。
为什么??????我看不懂这个式子啊。。。如果像题目一样都有实际值那到底要怎么算?能不能把推算过程写出来?
2.比较ab大小
if(a>b)
(t=a;a=b;b=t;)

不明白(t=a;a=b;b=t;)这个语句。。。。
我知道(t=a;a=b;b=t;)是互换的意思。我是想知道是怎么互换的。。。。

越来越乱了。。。。
会C的你们都是天才。。。。-.-b

1. 有下面表达式,(m=a>b)&&(n=c>d)
当a=1,b=2,c=3,d=4,m和n的原值为1时。。。。由于a>b的值为0,因此m=0,而n=c>d不被执行。。。
a=1>b=2这是错误的,专业点就是假,所以其表达式的值为0,注意C语言中假为零,真为1.所以m=a>b使m=0,由于短路原则,&&前面一个为假,则后面不再进行计算.所以而n=c>d不被执行。。。
2.比较ab大小
if(a>b)
(t=a;a=b;b=t;)

不明白(t=a;a=b;b=t;)这个语句。。。。它就是将a,b互换值.

第一题:涉及语言执行顺序的问题,&&为取“与”操作,既然m=0了,也就是无论n为何值都不影响判断了,而c为从左至右执行,所以后一句不执行。

第二题:t是一中间变量,为了便于解释我们假设a=2,b=1.
先判断a>b,为真则拒续执行if语句:
t=a=2 t值为2
a=b=1 ;=;为赋值符号,将b的值1赋给a,a的值变为1
b=t=2 同理,将t的值2赋给b,b的值变为2
if语句完成,a,b的值互换
若a>b为假,不拒续执行if语句,跳过if语句,执行下一条a,b仍为原值

呵呵,加油吧

去搜狐查查!

1.(m=a>b)&&(n=c>d)这个是短路原则,c是一种高效的语言,逻辑表达式的值已经能被确定,则不做多余的判断;比如与(&&)前为0则整个表达式为0;或(||)前为1,则整个表达式为1;而不会去管后面的真值.

2.if(a>b)(t=a;a=b;b=t;) 呵呵,这个你打错了.应该是if(a>b){t=a;a=b;b=t;}也不是比较大小,而是按大小输出吧...

第一题是个逻辑表达试 逻辑表达式的结果只有两种1(真)和0(假) 式中"="具有右结合性所以先看a>b为真还是假显然a小于b 故a>b结果为假用”=”