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:38:51
周星星
1。“如果MS不尽快更新自己的产品难道等别人超过自己?”--- 这个逻辑不是很正确吧?!
2。“C/C++和VB,C#之间根本没有比较,用途本来就不同!”
--- sorry,在这篇文章中,我比较过C/C++和VB吗?我批评的是“靠CPU主频的提升来加快VB程序的速度”这个观点,而不是VB本身。
3。和2一样,“毫无意义的比较” --- 你认为我又比较什么啦?我有说过GCC好,或者VC++差的话吗?我只是对VC++6.0的结果很奇怪而已,标题上加上一个“对 GCC”只是给“g++输出什么,我就坚决不输出什么,哈哈”这段搞笑的话给个铺垫,为了防止意外,我在结尾还特意加了三行说明文字,在标题前加了“[搞笑篇]”。
哦,我想到了,估计就是这个“[搞笑篇]”令你产生了误解,我的意思是这篇文章本身就是搞笑搞笑的,而不是说VC++是个可笑的编译器。
BTW:GCC 3.4.2 在 3.3.6之前发布,发布于2004/9/6
网友评论2012-11-20 09:38:40
firingme
呵呵……彼此彼此吧……对VC6的感觉是:成也VC6,败也VC6。没有VC6,C++肯定不会如此流行;可是VC6如此流行,结果反倒阻碍了C++的进一步发展。这里的VC6几乎可以理解成MFC的代名词。PS:最后还加上一个jjHou的《深入浅出MFC》,形势更加严峻了~!关于VC7.1成熟与否的问题,就光Boost一个类库就不知道做过多少次回归测试了,如果有问题,早down了。不过VC7.1是一个ICE多于VC6的东西,有时候莫名其妙就编译器内部错误了,用它要做好扫雷的打算。;-)不过Boost和ACE的牛们,都对其推崇备至,应该不是没有道理的。星星有机会,应该主动尝试在正规工程用一下。
网友评论2012-11-20 09:38:32
无名
刚查了一下
GCC 3.3.6 (released 2005-05-03)
见:
http://gcc.gnu.org/
GCC3.4.2和VC6差了不止5年吧。。。。
毫无意义的比较
不过作为研究倒是挺有趣的
网友评论2012-11-20 09:38:24
无名
我要哭了,555,我从来没有说过内存数据库,事实上我认为虽然内存要最大限度的利用,但仅仅是内存那还绝对不够,靠内存来增加数据库的响应速度 和 VBer认为靠CPU主频的提升来加快VB程序的速度 一样,解决不了实质问题
如果这样,就好比你觉得C++太慢,还是用ASM写既快内存又用得少,汗。。。
VB之类的主要是节省开发时间如果你用C++做同样的东西,等你做好人家早就做好了被采购者采用了。。。
C/C++和VB,C#之间根本没有比较,用途本来就不同!
另外说一句,VC6的编译器的确不够好,但是那是什么时候的产品了?你用的是同时代的gcc来比较的吗?