请教Xcode里的int类型所占字节长度和linux不一样吗?

2012-07-26 21:57:52 +08:00
 jyoe
unsigned int int_x = 4294967295;
printf("%d \n",int_x); // 1111-1111-1111-1111-1111-1111-1111-1111

unsigned int int_y = 4294967296;
printf("%d \n",int_y);// 1-00000000000000000000000000000000

unsigned int int_z = 4294967297;
printf("%d \n",int_z);//1-00000000000000000000000000000001

unsigned情况下 int类型的话4个byte位全部用来做存储 可为什么输出的时候是
-1
0
1

4294967296和4294967297的输出是正常的 为什么第一会输出-1 求教!
6109 次点击
所在节点    iDev
8 条回复
nivlac
2012-07-26 22:57:57 +08:00
一样的,最高位是符号位,负数是补码
xuan_lengyue
2012-07-26 23:00:47 +08:00
int的长度和编译器、机器字长都有关系。
C标准没有限定,只规定了最短四个字节。
godwarlock
2012-07-26 23:53:12 +08:00
%d 是用来显示 int的
%ud 是用来显示 unsigned int 的

int长度如 @xuan_lengyue 所说并没有一个规范
leafduo
2012-07-27 00:43:48 +08:00
@xuan_lengyue 最短是2个字节吧我印象中?
leafduo
2012-07-27 00:52:25 +08:00
@xuan_lengyue basic signed integer type. At least 16 bits in size.
xuan_lengyue
2012-07-27 00:58:44 +08:00
@leafduo 哈哈,记错了,多谢 ==
jyoe
2012-07-27 10:37:05 +08:00
@leafduo short类型是2个字节 就是16个bit位
jyoe
2012-07-27 10:38:26 +08:00
@godwarlock 感谢感谢~漏了一个%ud

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/43540

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX