unsigned int zero = 0;
unsigned int compzero = 0xFFFF; 对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下: signed int compzero = ~0;为什么会这样,我百度了下,有人这样回答,我觉得不错,所以,特别记录下来。
这与多少位的处理器无关,是编译器决定的。当int为32位二进制数时,0xFFFF才占了一半的位数,显然不是最大值0xFFFFFFFF;但~0却就是0xFFFFFFFF,所以signed int compzero = ~0;这个写法就很保险,无论int是多少位的都能使之得到最大值