Objective C中的十六进制整数到整数

时间:2011-12-28 10:02:55

标签: objective-c integer hex

已经问过类似的问题了,但请有人向我解释为什么这段代码......

NSInteger hexInt = 0x80000505;
NSLog(@"%d, %#x", hexInt, hexInt);

打印出-2147482363, 0x80000505而0x80000505等于2147484933而不打印到-2147482363 ? 谢谢......

1 个答案:

答案 0 :(得分:0)

NSInteger定义为int(typedef int NSInteger),2147484933溢出int最大值(在32位系统上,其中int的范围是-2,147,483,648到+2,147,483,647),因为如您所见,最高位是设置在0x80000505中,所以0x80000505是负数。