Chinaunix首页 | 论坛 | 博客
  • 博客访问: 584472
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2356
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

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。

阅读(2979) | 评论(26) | 转发(0) |
给主人留下些什么吧!~~

网友评论2012-11-20 09:36:55

周星星
我相信你们说的是真话,真的感觉VC71不错,但我却不相信你们说的是事实,虽然你们真心认为它是事实。
虽然都以VC做项目,但因为项目性质不一样,所以用到的技术也完全不同,某些功能正确,不等于所有功能都正确。比如某些标准C++语法,为清风雨所不齿,当然他就不会用到,但这些“旁门左道”却是我所做项目必须用到的。 如果没有大量的应用做测试,我就不敢(注意是“不敢”而不是“不愿”)使用它,而对于VC++6.0,她的BUG基本上为人所知,所以也就不容易造成隐藏的危害。另外,我想问问你们,你们谁用C# .net1.1时发现了内存泄露,你们当然不会发现,但我们就不可能不会发现,所以于你没有问题的工具未必对我也没有问题。

网友评论2012-11-20 09:36:45

局部变量
其实vc71在一定程度上对软件的保护也有作用,其优化很多时候把代码改得面目全非,效率要比对汇编没有深入了解的人写的好的多,但也很难读。而且其“省略框架指针”功能使得crack时必须小心的跟踪局部变量(局部变量通过esp寻址而不是常见的通过ebp), 稍不留神就跟丢了。
另外它的"全程序优化"也很好, 可以避免写大量的内联函数。
intel c++个人认为其优化指针对intel的cpu,相比vc来说,通用性差一些。
gcc没用过,无法评价

网友评论2012-11-20 09:36:38

局部变量
个人感觉vc7.1已经是非常成熟的了,在我使用的几个项目中都没出任何问题,而且在优化方面的非常好,对标准的支持也非常好。在熟悉之后,感觉ide也比vc6强不少

网友评论2012-11-20 09:36:26

清风雨
那vc7.1的输出呢? 顺便贴一个好了。自己输出一个:
int
long
int
long