int a=1,b=2,c; 表达式(c=a<b?a=4,a<b?b=10,c=20:30:40)的结果为( )

2024-12-27 12:12:10
推荐回答(2个)
回答1:

(c=a

c=  a

 

因为a=1,b=2,所以a<b成立,所以执行a=4,a

然后a赋值为4后,a

最终运行后,a=4,b=2,c=30

#include "stdio.h"
void main()
{
int a=1,b=2,c;
c=a printf("a=%d\nb=%d\nc=%d\n",a,b,c);

}

回答2:

合法,C语言中“等号表达式”的结果,就是等号右边的数值。例如a=b=4;这里的顺序是a=(b=4);b=4就是等号表达式,这个表达式的结果就是4,所以a也被赋予4。另一种常见的写法while((ch=getch())!='q'){}这里先执行ch=getch(),然后这个表达式的结果,和'q'进行比较。回过来,看你的问题1.b=4后,b的值是4,表达式值42.a=3后,a的值是3,表达式值33.a-=4*3,也就是a=a-12,得到-9,表达式值-94.a+=(-9),a=a-9=-18所以