C语言 逗号表达式

#include <stdio.h>
main()
{
int a=1;
char c=’a’;
float f=2.0;
printf(“<1>:%f\n”,(a+2,c+2));
}

详细解释一下 谢谢

楼主不用晕,上面的说的都对。。。你老师说的也对。。
如果那个表达式这样写:y=(x=(a+b),(b+c)) 则y
=
10,如果是:y=(x=a+b),(b+c)那么y
=
6,原因就是逗号是C语言运算符中优先级最低的了,优先级为15,而“=”(赋值运算符)的优先级是14,比逗号高。而逗号表达式到底是怎么回事呢,看这个表达是,b
=
(a,c,d,e),这里面比如acde这四个变量都进行了初始化,那么这个表达式的计算过程就是从a开始,一直到e,只看最后一个逗号后的变量的值,该值就是此表达式的值,所以这个表达式b应该等于e,,,这你也就不难理解你说的那两个表达式为什么结果不一样了。。y=(x=a+b),(b+c)这个表达式因为没有外层括号,而逗号的优先级又比等号的低,所以在进行完x=a+b后就直接给y赋值了,然后才进行b+c的运算,我这样说楼主可明白?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-06
(a+2,c+2)这个为逗号表达式
逗号表达式从左向右执行,最后一个执行的结果作为逗号表达式的返回值
即c+2的结果为逗号表达式的返回值,所以最后输出的是c+2的值本回答被提问者采纳
第2个回答  2020-02-06
逗号运算符是依次以从左到右的结合顺序进行运算,然后取最右边算式的值作为返回值。因此这个表达式的计算流程是:由于有括号运算符所以先对其进行运算,逗号运算符从左到右先计算k=3*2,此时k=6;然后计算k+4,此时k=10,返回;这里又有一个逗号运算符,由于左边算式已经计算完毕因此继续计算右边k+2,并作为(k=3*2,k+4),k+2这个表达式的返回值,值为12。同样,由于最后对k进行+2运算因此k的最终值也为12
第3个回答  2019-03-24
逗号表达式运算机制:从左往右分元子计算,以最后一个元子的值作为整个表达式的值。
如y=(x=a+b),(b+c)中的逗号表达式(x=a+b),(b+c)有2个元子,分别为1:(x=a+b)和2:(b+c)。
先计算1得到(x=6),元子1的值为6,此时X值为6;
再计算2得到10,元子2的值为10;
将元子2的值传给y,传到y=10.
y=(x=a+b),(b+c);改为y=((x=a+b),(b+c));
两种表述意义一致,因为逗号表达式本身是一个完整的表达式串,加再多层括号也一样。这句话等价于
x=a+b;
y=b+c;
第4个回答  2019-08-09
C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:
  3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
        
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。
所以y=(x=a+b),(b+c)
y值为6
,y=((x=a+b),(b+c))
y值为10
相似回答