c语言 逗号6.以下程序的输出为【 】.main( ){ int a=20,b=30,c=40;if(a>b) a=b,

问题描述:

c语言 逗号
6.以下程序的输出为【 】.
main( )
{ int a=20,b=30,c=40;
if(a>b) a=b,
b=c;c=a;
printf("a=%d,b=%d,c=%d",a,b,c);
}
中的a=b,可以这么用吗?
1个回答 分类:综合 2014-11-23

问题解答:

我来补答
可以的,这是逗号表达式!
在C语言中将被翻译为:
(a=b,b=c);
逗号表达式会一直计算逗号,遇分号结束,返回最后一个表达式的值.
比如上式int d=(a=b,b=c);将返回b=c表达式的值,即c,d将等于c.
----------
示例:
main( )
{
if(1) printf("1"),printf("2"),printf("3"); //将打印出123
}
再问: if(a>b) a=b, b=c;c=a; 的意思是不是a=(b,b=c),可是,的运算及很低啊 否则这个表达式什么意思?
再答: 不是的。 逗号表达式虽然运算级低,不过本例无其他运算符干涉,不受影响 ------ if(a>b) a=b,b=c; 等价于 if(a>b) (a=b,b=c); 等价于 if(a>b) {a=b;b=c;} ----------------------------------
再问: int a,b=1,c=2; a=b+c,a+b,c+3; 结果为什么a=3 如果是按顺序计算的话是5
再答: 你这个是这么来的: a=b+c,式1, a+b,式2, c+3,式3 ------- 你改成 a=(b+c,a+b,c+3); 就会是5了。
 
 
展开全文阅读
剩余:2000