菜鸟求助,关于逗号运算符
#include <stdio.h>void main()
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d\n",y,x);
}
这是小甲鱼老师的课件里面的一个练习题,我觉得应该是y=10,x=6;
但是vc6.0测试的结果是y=6,x=6;
求解。
x为6,因为a+b=2+4=6,不再解释
y的结果为6,是因为,y=(x=a+b),(b+c);不等于y=((x=a+b),(b+c));,如果是后者,y的值为10,解释如下:
y=(x=a+b),(b+c);中b+c的值与a+b的值都被求出,a+b的值被赋给了变量x,而x的值又被赋给了y,把本句拆分开,相当于x=a+b;y=x,b+c;这样看就清晰很多了,y=x,b+c中y的值于x的值相同,均为6,但是表达式的值为10(这就是你误认为的结果),如果本句中的表达式为y=(x,b+c),那么由于都好表达式的缘故,y的值和表达式的值相同,均为10
总结:本例y=(x=a+b),(b+c);中,b+c的值是表达式的值,与y的值无关
满意请采纳,不满意请追问 折心灬小轩 发表于 2014-6-20 01:18 static/image/common/back.gif
x为6,因为a+b=2+4=6,不再解释
y的结果为6,是因为,y=(x=a+b),(b+c);不等于y=((x=a+b),(b+c));,如果是 ...
对哦,等号后面没用括号括起来 2楼解释清楚了。。。 2楼解释得很好。。。 是小甲鱼老师的课件 这个我也不太懂 这个我也不太懂 2楼解释得很好。。。
“y=(x=a+b),(b+c);”不同于“y=((x=a+b),(b+c));”。前者则y值为6,后者则y值为10
页:
[1]