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在此处