c语言逗号表达式的问题

如题所述

第1个回答  2019-12-17
逗号运算符的做优先级是最低的,所以要先算赋值运算符.
y=(x=a+b),(b+c)是一个表达式,包括两部分:
表达式1是一个赋值表达式,表达式2是一个算术表达式.
老谭的书里说的是整个逗号表达式的值是表达式2的值,所以,整个逗号表达式的值是b+c,y的值是表达式1的值,即a+b.
他写错了.这样写就对了y=((x=a+b),b+c);

关于逗号表达式的问题。
关于逗号表达式的问题,首先需要纠正一个误解:printf("x=%d,y=%d",x,x);应该是printf("x=%d,y=%d",x,y);正确结果为x=4,y=11。逗号运算符在C语言中的作用很特别。它以顺序求值的方式连接两个或多个表达式,如3+5,6+8。求解时,先计算表达式1(3+5),再计算表达式2(6+8),最终结...

在C语言中逗号运算符如何作用才是合乎规则的?
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。假设 b=2,c=7,d=5, a1=(++b,c--,d+3); a2=++b,c-,d+3;对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是 d+3,为8,所以...

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语言逗号表达式是由左向右进行的:k=3*2=6,K+2=8,表达式返回8。逗号表达式用法:当顺序点用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一个表达式的值。示例:main(){int a,s,d;s=2;d=3;a=12+(s+2,d+4);} ...

c语言逗号表达式的问题
printf("%d,%d,%d",(a,b,c),b,c);则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。C语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而c使用灵活...

c语言逗号表达式的问题
逗号运算符的做优先级是最低的,所以要先算赋值运算符.y=(x=a+b),(b+c)是一个表达式,包括两部分:表达式1是一个赋值表达式,表达式2是一个算术表达式.老谭的书里说的是整个逗号表达式的值是表达式2的值,所以,整个逗号表达式的值是b+c,y的值是表达式1的值,即a+b.他写错了.这样写就对了y=(...

c语言 逗号表达式问题
2、逗号表达式是所有运算符中最低的,为十五,也就是说把其它都算完了才轮到它,程序中应该是先将x++的值负给z,然后算y++,最后算++y,如果按你想的那样,赋值语句该写成z=(x++,y++,++y); ,加上一个括号。 手机写的,光换输入法就累死了!

C语言逗号表达式的一个问题?
应该是后面的才算,前面的只是作运算赋值给c

C语言菜鸟提问,关于逗号表达式。请看我下面的例子
这么来看y=(x=a+b)是逗号的前一个语句,那么y就等于6;而(b+c)是逗号的后面一个表达式 你这样看看:加一个变量:int z;z=(y=(x=a+b),(b+c));这样z就等于(b+c)了,那么总结出来:要得到一个逗号表达式的值是要将这个逗号表达式用括号括起来的!!

一道C语言逗号表达式
答案应该选c。逗号运算是从左向右的。若有表达式:a,b,c;表达式的最终取值是c,也就是去最后最后一个表达式的值。所以像上面的表达式y=((x=3*y,x+6),x-1);y的最终取值应该是y=x-1;内括号的运算取值应该是x+6,x=3*y运算结果是15,这样y的取值是14。所以答案选c....

相似回答
大家正在搜