孚日大家纺 发表于 2013-12-27 09:44:12

C语言运算逗号问题

void main()
{
        int a = 2, b = 4, c = 6, x, y;
        y = (x=a+b), (a+c);
        printf("y=%d, x=%d\n", y, x);
}
看视频教程上这种情况y应该是最后那组赋值上去,我测试的时候怎么y是赋值符号后最左边那组的值呢?
y = 5, (a+c), (x=a+b), 3; 按教程上说像这个打印出来y应该是3吧,可是我打印出来是5呢
不知道什么地方理解错了,请指教,谢谢

孚日大家纺 发表于 2013-12-27 16:58:56

各位前辈这不算问题吗

孩子,跟我走、 发表于 2013-12-27 20:21:09

1.逗号运算符的优先级是很低的, y = (x=a+b), (a+c);相当于 (y=(x=a+b)) , (a+c);所以肯定左边那组

2.一样的问题 y = 5, (a+c), (x=a+b), 3; 相当于 (y = 5), (a+c), (x=a+b), 3; 所以y肯定是5

y =( 5, (a+c), (x=a+b), 3); 这样就ok 了

和尚呀和尚 发表于 2013-12-27 20:26:42

楼上说对:lol::lol::lol:

正在写代码 发表于 2013-12-27 20:45:24

楼上正解:shock:

孚日大家纺 发表于 2013-12-28 10:25:52

孩子,跟我走、 发表于 2013-12-27 20:21 static/image/common/back.gif
1.逗号运算符的优先级是很低的, y = (x=a+b), (a+c);相当于 (y=(x=a+b)) , (a+c);所以肯定左边那组

2 ...

谢谢您的回答
页: [1]
查看完整版本: C语言运算逗号问题