【思考】程序中一个立即数是多少位对程序有什么影响?

看如下代码(环境为VC6):

#define NUM (unsigned char)0x01

long a = NUM<<17;
printf("%ld",a);
结果输出131072
汇编代码:
#define NUM ((unsigned char)0x01)
32:       long a = NUM<<17;
00401268   mov         dword ptr [ebp-4],20000h
33:       printf("%d",a);
0040126F   mov         eax,dword ptr [ebp-4]
00401272   push        eax
00401273   push        offset string "%d" (0043101c)
00401278   call        printf (00401520)
0040127D   add         esp,8
34:       return 0;
00401280   xor         eax,eax
注意20000h,并不是8bit。编译器处理的时候和运行的时候不一样。
 
unsigned char a = 0x01;
a = a<<9;
printf("%d",a);
输出为0。
永不止步步 发表于07-30 09:32 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:345377个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号