2

これは比較的単純な質問だと思いますが、何が起こっているのか正確にはわかりません。

NSString の stringWithFormat を使用して文字列を構築しようとするメソッドがあります

次のようになります。

NSString *line1 = [NSString stringWithFormat:@"the car is %d miles away", self.ma];

上記の行で「self.ma」は int である必要がありますが、私の場合、エラーが発生し、「self.ma」は実際には NSString を指しています。

だから、私はその行が読むべきであることを理解しています

NSString *line1 = [NSString stringWithFormat:@"the car is %@ miles away", self.ma];

しかし、私の質問は、最初の例の %d が私の NSString に対して何をしているのかということです。

デバッガーを使用すると、「self.ma」が「32444」に等しい場合があることがわかりますが、どういうわけか %d はそれを 1255296 に変換します。

32444 => 1255296 の変換は、ある種の基数変換 (16 進数から 10 進数など) であると推測していましたが、そうではないようです。

%d が私の文字列に対して何をしているのかについて何か考えはありますか?

ティア

4

1 に答える 1

4

実際には NSString へのポインターを与えているため、フォーマット文字列が整数を期待する場合、指定されたバイトを int として解釈します。与えられるのは、NSString がメモリ内にある場所のアドレスであるため、文字列のメモリ アドレスが出力されます。

于 2010-05-05T02:41:26.413 に答える