NSUIntegerのサイズ

436 views
Skip to first unread message

m_yukio

unread,
Aug 5, 2010, 5:18:33 PM8/5/10
to cocoa-dev-japan
村上と申します。
先日ある勉強会で指摘されたので、調べてみました。

勘違いして(多分、64bitへの移行のドキュメントを読み違えた)、私は、NSUInteger型の変数をNSLogでデバッグ出力する際、以下のよ
うにフォーマットを指定していました。

NSUInteger n;
n = 123;
NSLog(@"%lu", n);

NSUInteger型のサイズですが、Developerサイトで確認したところ、32bit環境では32bit、64bit環境では64bitなの
ですね。

http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html

When building 32-bit applications, NSUInteger is a 32-bit unsigned
integer. A 64-bit application treats NSUInteger as a 64-bit unsigned
integer

勉強会では、32bit/64bitでサイズが変わるので、以下のように記述するといいと教えてもらいました。

NSLog(@"%lu", (unsigned long)n);

皆さんは、どうされているでしょうか?

kimura wataru

unread,
Aug 9, 2010, 3:05:45 AM8/9/10
to cocoa-d...@googlegroups.com
木村(わ)といいます。

["%lu" "unsigned long" NSUInteger]でgoogleに聞いてみたところ、
Appleのドキュメント、String Format Specifiersの
Platform Dependenciesに書いてあるのを見つけました。

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW5

たとえば村上さんの例のように、NSUIntegerは%ld or %lxで
unsigned longにキャストすること、とあります。
他にもNSIntegerやCGFloatなどについても書かれています。

On Thu, 5 Aug 2010 14:18:33 -0700 (PDT), m_yukio wrote:
> 村上と申します。
> 先日ある勉強会で指摘されたので、調べてみました。
>
> 勘違いして(多分、64bitへの移行のドキュメントを読み違えた)、私は、
> NSUInteger型の変数をNSLogでデバッグ出力する際、以下のよ
> うにフォーマットを指定していました。
>
> NSUInteger n;
> n = 123;
> NSLog(@"%lu", n);
>

> 勉強会では、32bit/64bitでサイズが変わるので、以下のように記述するとい
> いと教えてもらいました。


>
> NSLog(@"%lu", (unsigned long)n);
>
> 皆さんは、どうされているでしょうか?
>

--
kimura wataru

Yanagisawa

unread,
Aug 9, 2010, 12:10:43 PM8/9/10
to cocoa-d...@googlegroups.com
大げさかもしれませんが、マクロを使う手もありますね。例えば

#ifdef __LP64__
#define UINT_FMT @"%lu"
#else
#define UINT_FMT @"%u"
#endif
...
NSLog(UINT_FMT, n);
...

とか(マクロの名前は適宜決めてください)。まあこれは Cocoa の ML
なのでアレですが、クロスプラットフォームなコードで書式指定が異なる場合などにも使えます。

Yanagisawa

2010年8月5日14:18 m_yukio <yukio.m...@gmail.com>:

> --
> このグループから退会するには、次へメールをお送りください。
> cocoa-dev-jap...@googlegroups.com
> その他のオプションについては以下にアクセスしてください。
> http://groups.google.com/group/cocoa-dev-japan
>

m_yukio

unread,
Aug 17, 2010, 7:58:42 AM8/17/10
to cocoa-dev-japan
村上です。

> Appleのドキュメント、String Format Specifiersの
> Platform Dependenciesに書いてあるのを見つけました。
>
> http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual...

このドキュメントを探していました。
Apple自身が、64bitに合わせたフォーマットにして、キャストするのをOS Xではお勧めしているようですね。

m_yukio

unread,
Aug 17, 2010, 7:59:34 AM8/17/10
to cocoa-dev-japan
村上です。

> 大げさかもしれませんが、マクロを使う手もありますね。例えば

この方法が、一番、一般的な素直な方法でしょうか。
ありがとうございます。
Reply all
Reply to author
Forward
0 new messages