初学C语言,今天碰到一个逗号运算符和逗号表达式的问题
今天听小甲鱼的视频课程,讲到逗号运算符和逗号表达式这节,提到求值过程是分别求2个表达式的值,并以表达式2的值作为整个逗号表达式的值,我有点不解,程序如下:#include<stdio.h>
void main()
{
int a=2,b=23,c=35,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
}
我运行结果是y=25,x=25。我想问一下,如果是将表达式2的作为整个逗号表达式的值的话,那么y不是要等于(b+c),即=58.
求高手指点。。。。 hello,由于“,”运算符的优先级别低于“=”运算符 ,所以在括号运算以后优先吧25赋值给y。
不知道有没有说错:lol:,我也是新手,学到函数:ton: 那么这句话“并以表达式2的值作为整个逗号表达式的值”怎么解释呢? y=(x=a+b),(b+c); 你可以这样看
y=(x=a+b), (b+c);
y=x =a+b
y=x=2+23
y=x=25
而后面的(b+c)是用逗号隔开的 就像
int a=25,b;
只是a=25b只是一个申明 和前面的a=25没关系 同意楼上的,逗号应该只是起到分隔作用吧 试试同时赋两个值,用逗号隔开,再看看结果 感谢各位指点{:1_1:} wlz330860661 发表于 2015-10-7 02:05
hello,由于“,”运算符的优先级别低于“=”运算符 ,所以在括号运算以后优先吧25赋值给y。
不知道有没 ...
这说的咋那么别扭呢?逗号运算符有两个属性1.它保证被它分开的表达式按从左到右的顺序计算,(逗号是个顺序点,逗号左边产生的所有副作用都在程序运行到逗号右边之前生效)2.整个逗号表达式的值是右边成员的值. y=(x=a+b),(b+c);
多加一括号
y=((x=a+b),(b+c));
这就能出现你想要的答案了{:5_109:}
页:
[1]