2

私が正しく覚えていれば、あるマシンでintは16ビットであり、32ビットプラットフォームに移行するとint32ビットでした。

Snow LeopardとLionが64ビットになったので、CまたはObjective-CプログラムをXcodeでコンパイルして64ビットにすることはできintますか?(「%d」または「%i」も64ビット整数を取ります)。またはint、互換性の理由から32ビットとして保持されますか?

(64ビットを使用している場合int、64ビットはネイティブであるため、32ビットよりも高速になりますか?)

更新:sizeof(NSInteger) LionのXcodeによってコンソールアプリで印刷されたものが8(typedefの長さ)であり、iOS 5.1.1の場合は4(typedef as int)であることが わかりました。sizeof(int)両方のプラットフォームで4です。intつまり、以前は16ビットから32ビットに移動したように見えますが、今は32ビットで停止したいと思います。

4

3 に答える 3

3

Apple が採用しているLP64データ モデルでは、int は常に 32 ビットになります。ここのコメントで説明されているように、一部のコンパイラでは代わりにILP64データ モデルを使用できる場合があります。ただし、プリコンパイル済みライブラリとの互換性が失われる可能性があります。

于 2012-06-07T10:38:41.653 に答える
1

intが64ビットになるように、CまたはObjective-CプログラムをXcodeでコンパイルできますか?

int64ビット幅にするclangオプションを見つけることができませんでした。実際、プラットフォームのヘッダーは、そうではないと想定しているようです。intまた、パラメーターとして を受け取るプラットフォーム ライブラリ関数/メソッド (書式文字列で型printf()を指定するようなものを含む)を使用することはできません。int

また、64 ビット int を使用する場合、64 ビットはネイティブであるため、32 ビットよりも高速になりますか?

ints32 ビットを使用すると 64 ビットを使用するよりも遅くなる理由はわかりませんints。実際、おそらく、それらの 2 倍の数をキャッシュに収めることができるため、より高速になる可能性があります。

于 2012-06-07T11:12:17.170 に答える