2

同じクラスで定義されたmyarrayを使用するメソッドを作成しました。countを使用すると、常に0が返されます。使用する場合:

printf("%d", [myarray count]);

コンパイラは言う:

Format '%d' expetcs type 'int', but argument 2 has type 'NSUInteger'

なぜ?

4

1 に答える 1

5

%luの代わりに使用する必要があり%dます。コンパイラは、渡されているパラメータに対してフォーマット文字列をチェックしprintf、符号なしを渡していることを確認しますが、符号付き整数として出力し、警告を発行します。printf警告は、データ型が異なるセマンティクス、つまり大きな正の整数を意味する場合、2^31以上の数に対して大きな負の数を出力することを示しています。

JoshCaswellとthepeppによるコメントに応えて編集

于 2012-01-10T19:45:25.203 に答える