2017-01-30 5 views
2

私はC++を初めて使用しています。 タイプ、メモリ使用量、アーキテクチャに基づいたメモリサイズの違いについて学習していました。 int32_tのような固定幅型を使うことには欠点はありますか?固定幅タイプを使用しない理由はありますか?

+0

PCでは、 int32_tを提供していないプラットフォームでも(オプションです)... –

+2

それはすべて意味論です。あなたのコードを読んでいる人々に何を言っていますか?プレーンな 'int'を使うと、それは一般的な整数だと言いますが、それについては特別なことはありません。 'size_t'を使うと、ある種のサイズだと言います。 'int32_t'を使うと、ある種の制限(signednessとsize)に従わなければならない特定の種類の整数データだと言います。 –

答えて

4

コードがでないシステムに移植可能にしたい場合は、の32ビット整数型を使用してください。実際には非常に稀ですが、彼らはそこにいます。

C++は、あなたが本当にすべき、あなたのコード内の特定のビット幅を取得するための最もポータブルな方法かもしれないint_leastN_tint_fastN_tタイプにアクセスできるようになりますcstdint経由C99(およびそれ以降)整数型へのアクセスを持っていますそれについて気になることが起こる。

2

intタイプのオリジナルの目的は、実行していたアーキテクチャの自然なサイズを表すことでした。その上で実行されるすべての操作が整数型に対して可能な限り速いと想定することができます。

最近の写真はもっと複雑です。キャッシュ効果またはベクトル命令の最適化は、自然なサイズよりも小さい整数型の使用を優先します。

intのアルゴリズムがであることが少なくとも以上であることが明らかな場合は、明示的に指定する方がよいでしょう。

+0

'int'は16ビットでなければならず、多くの8ビットプラットフォームがまだ使用されていました。 –

+0

@CarlNorumでも、これらのアーキテクチャでさえも、一般に16ビットのintを扱うための命令がありました。誰もが8ビットが計算に役に立たないことを知っていました。 –

+0

@ MarkRansom 8ビットまたは1バイト整数です。最終的には、十進数で255まで、または16進で0xFFまでカウントできます!私は私の30歳の古くなった電卓は8ビット整数よりも良い仕事をカウントすると思います。 –

0

など。

は、int_least32_t

は時間を節約するために使用し、スペースを節約時からint_fast32_t

しかし、実際には、私が個人的に使用long(少なくとも32ビット)およびint(少なくとも16ビット)を使用するには簡単に入力することができるため、時間を節約できます。

(さらに、int32_tは、オプションであり、存在することは保証されていません)

関連する問題