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语言小代码,逗号表达式的问题
你是误会在这里了 =赋值运算比逗号的优先级更高,所以这里是先计算a=3*5=15,然后a*4只是单纯的一个值,并不会有a=a*4这样的计算。所以 里面的逗号运算符最终只做到一个效果 就是a=15 于是最终值是 a=a+5=15+5=20
C语言逗号表达式的问题?
如果是((x=a+b),(b+c))实际上可以看成(6,10)整个逗号表达式的值应该是10 但这是错的,这儿还有赋值运算符。赋值运算符的优先级是14,而逗号表达式的优先级是15,也就是说上面的表达式中 y=(x=a+b),(b+c);应该等价于这样的结合:y=x,10;如果这样写的话,则答案很清晰,为:6 提示...
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语言逗号表达式的问题
逗号运算符的做优先级是最低的,所以要先算赋值运算符.y=(x=a+b),(b+c)是一个表达式,包括两部分:表达式1是一个赋值表达式,表达式2是一个算术表达式.老谭的书里说的是整个逗号表达式的值是表达式2的值,所以,整个逗号表达式的值是b+c,y的值是表达式1的值,即a+b.他写错了.这样写就对了y=(...
C语言菜鸟提问,关于逗号表达式。请看我下面的例子
这么来看y=(x=a+b)是逗号的前一个语句,那么y就等于6;而(b+c)是逗号的后面一个表达式 你这样看看:加一个变量:int z;z=(y=(x=a+b),(b+c));这样z就等于(b+c)了,那么总结出来:要得到一个逗号表达式的值是要将这个逗号表达式用括号括起来的!!
在C语言中逗号运算符如何作用才是合乎规则的?
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。假设 b=2,c=7,d=5, a1=(++b,c--,d+3); a2=++b,c-,d+3;对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是 d+3,为8,所以...
C语言逗号表达式的问题 x=6,y=7,z=8 r=func((x--,y--,x+y),z--)
补充:如果x--,y--换成r=func((--x,--y,x+y),z--)结果也是一样的,这是因为逗号运算符是从左至右进行运算的,先算完第一个逗号之前的表达式,在计算第二个逗号之前的表达式,依此类推,故,无论是前置还是后置,x的值都是在计算第二个逗号之前已经改变;但是逗号运算符中最后一个逗号...
c语言逗号表达式问题
((x=3*y,x+1),x-1),这是两个逗号表达式的嵌套,其实可以看成一个逗号表达式(x=3*y,x+1,x-1),你的错误在于把x+1看成x=x+1了。第一轮循环时,y的值是1,x=3*1=3,x+1的值是4,注意,你的错误在这里!你把4看成x的值了,4只是x+1这个表达式的值,并不是x的值,...
问一个C语言中逗号表达式的问题
逗号表达式 a+2,c+2 的值就是最后一个逗号后的表达式的值,即c+2的值,不过前面的也要计算。所以逗号表达式 4,99 的值就是99咯。有时候前面的计算可能后影响最后一个表达式的值,所以,得到结果虽然是最后一个表达式,但前面的也得先计算。eg: c='a'; 则表达式 s=(c++,c+2)=100; c先...