NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
上面的代码产生一个错误:
“ NSInteger”类型的值不应用作格式参数。添加明确的强制转换为“长”
更正后的NSLog
消息实际上是NSLog(@"%lg", (long) myInt);
。为什么我要的整数值转换myInt
到long
如果我想的值显示?
NSInteger
是不长),但它听起来像你的OS X的目标(其中编译NSInteger
是 long
)。
NSLog(@"%ld", (long) myInt);
,则强制转换long
是使其与的l
限定符匹配%ld
,但是所有这些都是不必要的,因为NSLog(@"%d", myInt);
足够了(假设我们可以看到myInt
不是long
。)底线,myInt
如果使用格式为long的限定符,则进行强制转换字符串,但无需使用长字符串格式限定符或long
在此处