0x10000与int/short越界
将0x10000赋给一个int变量,在不同编译器中的结果
1、在VC6.0中:
1 // 0x10000是否越界int.cpp : 2 // 看看0x10000是否超了int, 3 // 理论上1个char是8bit,就是0xFF;1个int是16bit,就是0xFFFF;所以0x10000应该是超的。 4 5 //#include "stdafx.h" 6 7 8 int main(int argc, char* argv[]) 9 { 10 int i=0x10000; 11 int ii=(int)0x10000; 12 short s=0x10000; 13 return 0; 14 }
通过调试发现,i与ii都是65536,s是0。
对于32位系统下安装的VC6,int是32位,short是16位,s是获取了0x10000的后16bit,得到结果为0x0000,即为0.
2、在IAR中,工程目标MCU为16位的MSP430F5418A:
3、在CCS中,MCU仍为MSP430F5418A: