2017秋装几月份上市:高手请进!一道C语言编程的题,对于您这相当简单!急!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/25 22:43:03
我4月1日要考试了,这些简单的问题还不会,请同门师哥师姐,伸出援助之手!!
以下程序运行的结果是:
main()
{int a,b,c;
a=1;b=2,c=3;a=b--<=a||a+b!=c;
printf("%d,%d",a,b);

请帮我讲,不要告诉我答案,谢谢!

a=b--<=a||a+b!=c中有以下运算符:
=(赋值) --(后缀) <=(小于等于) ||(或) +(加) !=(不等于)
所有的优先级为:(从高到低排列)
-- + = <= != ||
数学运算优先级>条件运算>逻辑运算
上式化为:(b--为后缀增1,即先运算后加1)
a=b<=a||3!=3
a=b是赋值运算,其表达式的值是b,即2
上式代为:
b<=a||3!=3
其中b是不小于等于a的 2<=1式值为假,即为0
3!=3也是不成立的,所以3!=3值为假,即为0
0||0的结果即0
输出结果为0

a = 1 ;b = 2 ,c = 3 ;
a = b --< = a || a + b != c ;
先运算 b --<= a
b 自减 1 后为 1 然后和 a 比较大小
结果b --<= a为真 结果为 1
a = 1 (b--<=a)
将 1 赋值给 a
再计算 a + b != c
a 和 b 都为 1
相加等于 2 不等于 c
结果为真 1
1 || 1
为 1
结果
a 为 1 b 为 1

应该是先算b--<=a即b<=a,b-- 运算后b为1,b--<=a为0
然后再算 a+b!=c 即1+1!=3成立,a+b!=c为1
所以有0||1
整个b--<=a||a+b!=c的值为1,把1付给a,a的值为1
最后结果a=1,b=1

补充一点,优先级:-- , + , <= , != , =

b++先用b的值计算,再b自减
++b先b自减,再计算

a=1;b=2,c=3;a=b--<=a||a+b!=c;
从中可看出
最后的赋值:b=2,a是一个逻辑运算后的结果(要么是1要么是0)

a=b--<=a||a+b!=c;<==>a=[(b--)<=a]||[a+(b!=c)]
(1)先算b-- 即将b=2代入 之后b值减1
(b--)=2 之后 b=1
(2)算(b--)<=a 因a=1 有2<=1 为假
即 (b--)<=a值为0
(3)算b!=c 此时有 b=1,c=3
即 b!=c 值为 0
(4)算a+(b!=c) 有 a=1,(b!=c)=0
即 a+(b!=c) 值为 1
(5)算[(b--)<=a]||[a+(b!=c)]
即 0||1 值为 1
最后结果为 a=1,b=1

a=1;b=2,c=3;a=b--<=a||a+b!=c
先算b-- ,b-- =1。
a=1.
1<=1为真。
所以后面的a+b!=c就不用判断了。
b--<=a||a+b!=c 这一段的值就是1
a就得到一个非0的数。
因为在c里真是非0
假是0。