2012年(158)
分类: C/C++
2012-11-20 09:35:39
对于同样的代码:
cout << typeid( 0 << 0 ).name() <<
endl;
cout << typeid( 0l << 0l ).name() << endl;
cout
<< typeid( 0 << 0l ).name() << endl;
cout << typeid(
0l << 0 ).name() << endl;
g++3.4.2 输出:
i 即 int
l 即 long
i 即 int
l 即 long
VC++6.0 输出:
long
int
long
int
g++的规律是:结果的类型取决于第一个操作数的类型,这一点要记住,我一开始以为 int< VC的规律是:???,实在看不出任何规律,但结合gcc的表现来看,那么规律就是:g++输出什么,我就坚决不输出什么,哈哈!
BTW:正如
所说:不能拿vc++6.0和g++想比,那不是一个时代的产品,但
a.
本文目的并不是用于贬低VC++6.0,而只是觉得VC6行为很奇怪,找不到理由得奇怪。
b.
对于VC++,在7.1、7.2、8.0beta2变得成熟且经过市场检验之前,我只敢用VC++6.0。