24. 设a=1,b=2,c=3,d=4,则表达式: a<b?a:c<d?a:d的结果为() A.4 B.3 C. 2 D.1 a<b?a:c<d?a:d 这个表达式是什么意思,怎样运算??? 28.设x,y,z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为()A.4 B. 16 C. 32 D. 52答案是C,这个题是怎么算的???31.设x和y均为int型变量,则以下语句: x+=y;y=x-y;y=x-y;x-=y;的功能是()A.把x和y按从大到小排列 B.把x和y按从小到大排列 C. x和y保持原值不变D。交换x和y中的值答案是C,看不懂x+=y;y=x-y;y=x-y;x-=y;究竟是个什么意思???
1、Da<b?a:c<d?a:d 是个条件表达式的语句 ? :(a<b) ? a:(c<d ? a:d ) 功能类似于 if就 a<b 成立的话, 表达式的值返回 a ,否则 返回 c<d ? a:d --》 如果 c<d 成立 则返回 a,否则返回 d,此处 a<b 成立 返回 a2、x=(y=4,z=16,k=32) 括号内部是 逗号运算符,他的运算规则为 从左到右进行运算,并且返回 最后一个 位置的 值 即 返回 32 ,就是 x=32 了3、 x+=y;y=x-y;y=x-y;x-=y;分别可以写成一下x=x+y; y=x-y;y=x-y;x=x-y; 建议 多看看C语言的基础知识
1.当于条件表达式: 我们先看看这个吧: int x=a<b?a:b;(当a,b为整数的时候)这个式子表示如果a<b成立的话就把a的值赋给x 如果不成立的话就把b的值赋给x. 我们再来看看题目中的式子:a<b?a:c<d?a:d;我们肯定是先看右边的式子啦,就是可以这样看这个式子:a<b?a:(c<d?a:d);先算出c<d?a:d,根据题目中,c=3,d=4可知c<d成立;故原式可化为a<b?a:a;可知式子的值就等于a;2.这是个逗号表达式:最后式子的值就是最后一个逗号的值;所以就是323.x+=y; x=x+y,y=y; y=x-y; x=x+y,y=x; y=x-y; x=x+y,y=x x-=y; x=y,y=x 所以选择D
24、Da<b?a:c<d?a:d,相当于:如果a<b那么就取a的值,否则需要查看c<d的结果,如果c<d那么值就去a,否则取d的值。当前a=1,b=2,a是小于b的,直接取a的值,那么结果为128、C31、C举个列子初始:X=2,Y=1。x+=y相当于x=x+y=2+1→x=3;y=x-y相当于y=3-1→y=2;y=x-y相当于y=3-2→y=1;x-=y相当于x=x-y=3-1→2;所以到最后x,y的值都没有变
24. 这样看就明了, (1<2)?1:((3<4)?1:4),先计算<, 再从右往左算,值是1,28. 逗号运算表达式,值取最后一个,所以x=3231. x=x+y;y=x-y; // y=(x+y)-yy=x-y; // y=(x+y)-((x+y)-y)x=x-y; // x=(x+y)-y结果,y, x不变