C 关于unsigned int compzero = ~0;

来源:互联网 发布:石破天 武功 知乎 编辑:程序博客网 时间:2024/06/03 14:50

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了


0 0
原创粉丝点击