死死团
精华
|
战斗力 鹅
|
回帖 0
注册时间 2009-10-2
|
明白了,谢AVC
书上一类似例题答案是从左到右运算的结果,VC里编译结果却是倒着的,所以迷茫了,虽然知道写程序的人是从左到右思考的,看来编书者用的不是VC..
请教如何写明程序优先顺序,可以使编译执行顺序从左到右 ...
appletree 发表于 2010-3-17 08:30 
之前写的东西被论坛功能误解了,已改
重申一下,cout 不是操作符……你那个连续的 << 相当于函数嵌套,而函数调用中的运算没有明确的先后顺序
下例还原 cout 的实质:
cout << x << y;
(cout << x) << y;
(operator << (cout, x)) << y;
operator << (operator << (cout, x), y);
即是:
f (f (x), y)
这时候是没有运算顺序的,我认为这样解释应该够明显了,逗号分隔的参数和表达式还是区别很大的吧……
如果你需要指定顺序,那永远都是要分拆开的,左序还是右序本来就是个麻烦,不少书在这点上都很不负责,但上下是有公理的
x = i++;
y = i + 2;
f (x, y);
这就是我提到的人为指定运算顺序 |
|