关于逗号运算符连接表达式的问题
#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);
}
小弟刚刚开始接触C语言,有很多不懂的东西,还请各位大佬多多指教。
我在视频中看到逗号运算符连接表达式,是最后一个表达式(b+c)给y赋值,那y=10,
但我运行之后是y=6 这是为什么?
1先(x=a+b)把a+b的值赋值给x 这时x=6
2也就是说(x=a+b) 就是 x
3y=(x=a+b) 意思就是 y=x 把x的值赋值给y ,y =6
4 ,号后 执行(b+c) ; (b+c)并没有赋值给谁,这是无用操作。 如果需要等于10的话,应该这样写y=((x=a+b),(b+c));
在这里,要用括号将逗号隔开的两个表达式括起来,才能达到你想要的效果。
至于原因,这样看,a、b、c值代入后:
y=(x=2+4),(4+6);
也就是:y=(x=6),10;
换句话说,这样写,其实是这样的两个表达式y=x=6和10,所以y和x的值其实都是6.
一个道理,你也可以输出(y=(x=a+b),(b+c))这个表达式的值,括起来之后结果也是10. 表达式的值是最后一个,但是赋值的情况只有前面,所以是 6 多谢各位大佬解惑
页:
[1]