2009-04-29 2 views

答えて

36

のNSLogへの引数はNSStringのである必要があり、あなたが

NSLog(@"%p", &myIntVar); 
+1

私は "%p"です。 %xは整数値を16進数で書式化しますが、%pはポインタのためのもので、16進数表記を追加して埋め込みます。 –

+0

良い点!私はそれに応じて答えを更新しました:) – smorgan

4

をしたいので、試してみてください。

NSLog(@"%p", &myIntVar); 

または

NSLog(@"%lx", (long)&myIntVar); 

最初のバージョンはポインター固有の印刷を使用していますformatは、渡されたパラメータがポインタであると仮定していますが、内部的にlongとして扱います。

2番目のバージョンでは、アドレスを取得して長整数にキャストします。これは、 "l"形式の修飾子を指定しないと、指定された値が通常は32ビット長の整数であるとみなされるため、64ビットプラットフォームでの移植性のために必要です。

+1

私は2番目のバージョンに対してお勧めしたい、あなたは何も得られません。 %pはすでに32または64ビットプラットフォームでは正常に動作しています。 –

+0

アップルは、後者の方法自体について特に言及しています:http://developer.apple.com/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1 – Alnitak

0

Nslog(@ "%x"、& myIntVar); %xは長いint の場合、またはNslog(@ "%p"、& myIntVar)のように印刷できます。 %pはポインタ用です

関連する問題