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。
网友评论2012-11-20 09:37:49
firingme
首先,VC7是失败的,下面的文字只是针对VC7.1也就是VS2003。不过VS2003个人版和企业版的VC版本号好像也有变化,我这里指的是企业版的那个VC7.1。
其次,微软的传统是用VS开发VS,所以,VS2003是用VS2002开发,VS2005是用VS2003开发,一点不奇怪。
下面列几点吧,你在blog上说话是从来不动脑子的,感觉像个小孩子,呵呵……
1、我机器上没有装Office 2003,不好做结论。不过VS2003的devenv.exe的引入表信息如下:
->Import Table
中间省略...
7. ImageImportDescriptor:
OriginalFirstThunk: 0x0001476C
TimeDateSta
网友评论2012-11-20 09:37:26
周星星
你认为VC7.1成熟了,请问:
a. 有几个软件是VC7.1编译出来的?难道office2003是VC7.1编译出来的?难道VS.net是VC7.1编译出来的?
b. 如果VC7.1成熟的话,为什么短短时间内又推出VC8.0beta?
旁门左道 这个词我是加了引号的,这是个反语你应该知道吧?!
C/C++中有旁门左道的语法吗?你认为goto是旁门左道,还是template是旁门左道?C/C++中有你不需要用到的语法,但绝没有旁门左道的语法。C/C++标准委员会成员是由全世界几十个国家的专家组成的,如果真的存在不应该使用的语法,那么这些语法会被加到C/C++中来吗,记住一点:你不是专家。
VC7.1既不是开源软件,也不是免费软件,所以你说的开源软件用VC7.1有点滑稽,如同你施舍半片面包给非洲难民,却要求非洲难民报销你去非洲的飞机票。
你说的也许是开源软件,但不是大部分的开源软件,而是windows上那些烂得卖不出去的小软件,借开源名号来