NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
上面的代码会产生一个错误:
"NSInteger"类型的值不应用作格式参数;将显式强制转换添加到"long"中
修正后的NSLog
信息实际上是NSLog(@"%lg", (long) myInt);
.如果我想显示myInt
的整数值,为什么要将其转换为long
?
NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
上面的代码会产生一个错误:
"NSInteger"类型的值不应用作格式参数;将显式强制转换添加到"long"中
修正后的NSLog
信息实际上是NSLog(@"%lg", (long) myInt);
.如果我想显示myInt
的整数值,为什么要将其转换为long
?
如果在OS X(64位)上编译,会收到此警告,因为在该平台上,NSInteger
定义为long
,是64位整数.另一方面,%i
格式用于int
,即32位.因此,格式和实际参数的大小不匹配.
由于NSInteger
是32位或64位,这取决于平台,编译器建议
Update:由于iOS 7现在也支持64位,所以在编译时可以得到相同的警告