有这么一段C程序:
View Code
最终程序的结果大家很容易都能猜到,但是其中还有一点很有用的知识:0xFE是一个常量,最终翻译成汇编语言的时候是立即数,存放到寄存器中。这就说明这个常量占用一个字长,不足一个字长的高位最终被扩展为0. 依据这个原理我们可以写出不依赖具体机器的掩码程序。
1 #include <stdio.h> 2 3 int main() 4 { 5 char hex1 = 0xFE; 6 int hex2 = 0xFEFE; 7 8 char hex3 = hex1 & 0xFE; 9 int hex4 = hex2 & 0xFEFE; 10 11 printf("hex3 = %x, hex4 = %x\n", hex3, hex4); 12 }