C语言中的常量

有这么一段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 }

posted on 2012-09-19 10:15  沉沉-_-  阅读(291)  评论(0编辑  收藏  举报

导航