NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
上面的代码会产生一个错误:
“NSInteger”类型的值不应用作格式参数;将显式转换添加为“long”
修正后的NSLog
消息实际上是NSLog(@"%lg", (long) myInt);
。为什么我必须转换整数值myInt
to long
如果我想要显示该值?
如果您在 OS X(64 位)上编译,您会收到此警告,因为在该平台上NSInteger
定义为long
是一个 64 位整数。这%i
另一方面,格式是为了int
,这是 32 位的。所以格式和实际参数的大小不匹配。
Since NSInteger
是 32 位还是 64 位,具体取决于平台,编译器建议
添加演员表long
一般来说。
Update:由于 iOS 7 现在也支持 64 位,因此编译时会收到相同的警告
对于 iOS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)