Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4276505
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-09-22 15:07:31

评价下面的代码片断: 

unsigned int zero = 0; 
unsigned int compzero = 0xFFFF; 
/*1's complement of zero */ 

对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下: 

unsigned int compzero = ~0; 

为什么啊?
unsigned int compzero = 0xFFFF; 
只写了2个字节,16位的才符合 
32位的可以写: 
unsigned int compzero = 0xFFFFFFFF; 

但unsigned int compzero = ~0;更安全,不管有多少位,直接取反,把所有的0都变成1了
阅读(2282) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~