NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
上記のコードはエラーを生成します:
タイプ「NSInteger」の値は、フォーマット引数として使用しないでください。代わりに明示的なキャストを「long」に追加してください
訂正された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
ここにキャストしたりする必要はありません