c语言中的逗号表达式计算结果我的为什么不是最后一个表达式的结果,而是最开始一个表达式的结果?

例题如下:
int a=3,b=5,c=6,x,y; x=(y=a+b),(b+c),(a+c); printf("x=%d\n",x); 我的结果确是a+b

逗号表达式的运算级最低,比赋值运算符级别还低。

所以 x=(y=a+b),(b+c),(a+c); 
是先执行赋值的,也就是说 x=(y=a+b) 得到的是x=y=8,而后面没有对x再进行赋值,所以x=8

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-06-12
这里就是最后一个逗号的结果。不过,你要注意优先级,赋值运算高于逗号运算。所以要先赋值,后逗号。

c语言逗号表达式 是不是所有的逗号表达式在做赋值时都得加括号 不然就...
逗号是依次向后运算 y=4,5; \/\/把4赋值给y,逗号依次运算,到了5,但没有等号进行赋值,所以y=4;y=(4,5); \/\/括号内的都是赋值给y的值,先把4赋值给y,然后逗号依次运算,把5赋值给y,所以y=5.

C语言逗号运算符的问题,为什么下面程序的z=1?
这是因为逗号表达式的优先级是最低的。所以,它是先做z=x++,然后再做y++,最后做++y。

逗号表达式怎么用
逗号表达式在编程中使用的关键在于理解其运算规则。首先,逗号表达式的计算顺序是从左到右,逐个计算每个表达式,但整个表达式的结果只取决于最后一个表达式的值,即使前面的表达式可能产生中间结果。逗号运算符的优先级最低,这意味着它在计算时会被忽略,直到最后才参与计算。在C语言中,如果使用%d格式声明...

C语言中逗号运算符怎么用?为什么结果只取其中一种
逗号表达式的求值过程是从左至右依次对每一项求值,最终表达式的值等于最后一项的值。例如有逗号表达式a, b, c,求值顺序是a、b、c,最终表达式的值为c的值。

c语言问题之逗号运算
这是因为 C语言规定啦,逗号运算符的求值顺序,从左到右求值,语言这样 规定是有理由的,比如 int i = 0, j = 1, k;k = (i += 2, j *= i);这里面的 k 值 是由 j *= i 所求的,而 j *= i 里面的i值 依赖 前面 一个 i+=2,如果不先计算 i+=2, j *= i 就会得到...

逗号表达式只看最后一个吗
逗号表达式的结果是最后一个子表达式的值。逗号表达式,作为C语言中的逗号运算符,具有最低的优先级。它用于连接两个及以上的式子,从左到右依次计算各个表达式,整个表达式的结果取最后一个表达式的值。(3+5,6+8)被称作逗号表达式,其计算顺序是先进行表达式1的运算,接着是表达式2,整个表达式的值为...

...为什么Y等于最后一个表达式,那前面的表达式不是多余了吗
不是多余的。其实这题中,因为逗号的优先级要比=号还要低,所以y首先取表达式1的值。但是之后的表达式还是要运行的。说个例子你就懂了:int i=2,y; y=i++,++i;这时要输出y的值,那么y的值为第一个表达式i的值,为2,若是要输出i的值。那么因为之前的逗号表达式要继续运行,所以i=4,...

逗号c语言
1、x=a+b \/\/x=6 2、y=x \/\/y=6 3、b+c \/\/b+c=10,这个表达式有计算,但因为没有等号,表达式的计算结果没有被保存下来 这个顺序的原因是赋值表达式的优先级高于逗号表达式的优先级,如果要逗号表达式发挥作用,应该把整个逗号表达式括起来,这么写:y=((x=a+b),(b+c));...

...怎么样运算?第十六题,答案是c.z的值不应该是最后一个表达式的...
逗号运算符就是依次运算,换成分号也行。z的值是1因为把x自加前的值给了z,所以z是1。x只进行了一次自加,所以是2,y经过两次自加所以是3

c语言中关于逗号运算符的疑问!
逗号表达式,按从左到又的顺序依次计算的,把最后一个表达式的值做为逗号表达式的值 所以 printf( ”%d\\n ” ,z=(x%y,x\/y)) ;中,z的值就是x\/y的值即10\/3=3;a=0;b=0;c=0;c=(a-=a-5),(a=b,b+3)而在这c=(a-=a-5)这是一个赋值表达式,作为这个逗号表达式的第一个表达式...

相似回答