黑马程序员技术交流社区

标题: %i 与 %li 有什么不同 [打印本页]

作者: Silent_memory    时间: 2014-3-5 11:20
标题: %i 与 %li 有什么不同
本帖最后由 Silent_memory 于 2014-3-12 22:18 编辑

假如我定义 int a = 10;  long int b = 20; 我想用NSLog输出a时 可以为 %i   输出b时用 %li  
这个 %i  与 %li 有什么具体的区别吗?  我用%i 去输出b 会对结果有啥影响。
作者: 脸皮猴    时间: 2014-3-5 12:03
本帖最后由 脸皮猴 于 2014-3-5 12:05 编辑

%i应该是输出整型,%li是输出长整型。具体会出现什么样子的区别,你可以试一试。定义一个长整型变量,然后用%i输出。你自己看得到,你会记忆更深刻。

作者: conpgy    时间: 2014-3-5 19:13
因为长整型的范围大于等于整型。如果一个机器上长整型占4个字节。如一个长整型的二进制是这样表示的:00000000 00000011 01000000 00000000。而如果整型只占两个字节。你用%i输出整型。就会发生溢出。即把前面两个字节给舍去了。这个数字变成了 01000000 00000000!因此打印出来的这个整数并不是实际的值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2