泡泡·↗忧伤 发表于 2013-10-17 21:43:17

千古难解的C程序!!

我是按鱼哥的写的为什么y值附出来的不应该是10吗??怎么还是6 呀!求解呀


#include <stdio.h>
int main()
{
int a=2,b=4,c=6,x,y;
y = (x=a+b),(b+c);
printf("%d,%d\n",y,x);
return 0;

}

123de7 发表于 2013-10-17 21:52:24

赋值运算符优先级,大于逗号运算符,先y = (x=a+b),

123de7 发表于 2013-10-17 21:53:03

我也是菜鸟,不知道对不对

格式天下 发表于 2013-10-17 21:54:04


兄台,这样才对,y = ((x=a+b),(b+c));这样才算是一个逗号表达式 , y = (x=a+b),(b+c);这个他只是执行了前半段语句,至于为什么不报错,是因为编译器把这个整条语句看成了一个逗号表示式了

devotedtoc 发表于 2013-10-17 22:22:45

在外面再加个括号就不等于6了

Orochi 发表于 2013-10-17 22:48:44

学习了 。。谢谢

泡泡·↗忧伤 发表于 2013-10-18 21:57:49

格式天下 发表于 2013-10-17 21:54 static/image/common/back.gif
兄台,这样才对,y = ((x=a+b),(b+c));这样才算是一个逗号表达式 , y = (x=a+b),(b+c);这个他只是 ...

谢谢你了 你说的很对!!

泡泡·↗忧伤 发表于 2013-10-18 21:58:30

devotedtoc 发表于 2013-10-17 22:22 static/image/common/back.gif
在外面再加个括号就不等于6了

谢谢你了 你说的很对!!.

未闻丶花名 发表于 2014-2-6 13:46:23

路过看一看= =!

a471893438 发表于 2014-2-6 14:15:55

原来如此啊

飞蛤 发表于 2014-2-6 14:32:35

来看看……   

jiangyuming0434 发表于 2014-2-6 15:10:03

看来好心人真是多啊。

wbwchina 发表于 2014-2-6 15:29:51

歧义,不要再纠结了,实际上没有这样编程的

牡丹花下死做鬼 发表于 2014-2-7 10:31:44

我勒个去 逗号表达式 没多少实际用处不建议你纠结他

ツ执ぺ影o 发表于 2014-2-7 11:11:19

C语言里面的运算都是从右到左的

徐颖科 发表于 2014-2-7 14:38:25

学到姿势了~

xcz159357 发表于 2014-2-7 16:39:02

y = (x=a+b),(b+c);      //这是一个逗号表达式
y = ((x=a+b),(b+c));   //这是一个赋值表达式
两者要分清
页: [1]
查看完整版本: 千古难解的C程序!!