c语言,逗号运算符和逗号表达式,如图,为什么Y等于最后一个表达式,那前面的表达式不是多余了吗

如题所述

不是多余的。其实这题中,因为逗号的优先级要比=号还要低,所以y首先取表达式1的值。但是之后的表达式还是要运行的。说个例子你就懂了:int i=2,y; y=i++,++i;这时要输出y的值,那么y的值为第一个表达式i的值,为2,若是要输出i的值。那么因为之前的逗号表达式要继续运行,所以i=4,结果是y=2,i=4。你可以去调试看看~
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-24
晕你,这是语法的规定。
如果,最后一个表达式的操作数,要用到前面表达式的结果呢!!
所以不是没有用的。
第2个回答  2013-03-24
这是逗号运算符既定的游戏规则,就是这样的规定,参见谭浩强第三版第65页说明本回答被提问者采纳
第3个回答  2013-03-24
这跟具体的编译器有关。逗号的运算顺序是依不同的编译器不同而不同。
第4个回答  2013-03-24
省行数
可能“表达式n”中的值要用到“表达式1、2”中的计算值,逗号运算符是从左边的表达式一步一步走过来的

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

C语言中逗号表达式的问题
逗号表达式的运算级最低,比赋值运算符级别还低。所以 y=(x=a+b),(b+c);先算x=a+b=6,再y=x=6;而后面的b+c不影响x和y的值。所以最终x,y的值都是6.只不过 y=(x=a+b),(b+c);这整个式子的值是b+c=10而已。如果是y=((x=a+b),(b+c)); 那么才结果是x=6,y=b+c=10...

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语言 逗号运算符和逗号表达式 结合性问题
i=3*i=9 "%d\\n"="9\\n"所以一般的输出结果是:9 一个格式符对应一个参数,因此输出的是i=3*i的值9 希望回答对你有帮助。

C语言中算术运算符优先级的问题
逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。跟在其后的&&比||高。接下来的是条件运算符,赋值运算符及逗号运算符。在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不...

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

C语言逗号运算符前的表达式运不运行
逗号表达式是从左往右执行,最后那个式子的结果才是逗号表达式的结果,前面的执行是有效的。

c语言小代码,逗号表达式问题
在规定只能使用一个语句的地方,想实现多个操作,就得使用','逗号运算符,比如:int i, j;for( i = 0, j = 0; i<10&j<10; i++, j++ ) \/\/在for循环中同时初始化多个变量.{ ...} 后面那个截图是一个三目运算,理解起来很简单,为真:结果在前. 为假:结果在后....

c语言中逗号表达式的运算规则
逗号表达式,是c语言中的逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14;a=(a=3*5,a*4...

C语言 逗号运算符和逗号表达式
, 最后再执行逗号后面的语句(b+c)“其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值”这句话的意思是 如果只有单一的语句a,b 那么这条语句的值就是b表达式的值 x=a,b;的意思就是把x=a当成一条语句,最后这个表达式的值还是b的值,但是里面的变量x等于a ...

相似回答