C语言 逗号表达式
的有关信息介绍如下:
楼主不用晕,上面的说的都对。。。你老师说的也对。。如果那个表达式这样写: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的运算,我这样说楼主可明白?



