多分パフォーマンスですか?固定されていない整数を使用すると、別のアーキテクチャに移植するときに、プログラムが複雑になり、失敗する傾向があるように感じます。固定サイズの整数(int64_t、int32_t)の代わりに非固定の整数(int、long)を使用する利点はありますか?
答えて
std::intN_t
はonly if the implementation can directly support themを提供しています。したがって、それらを使用する移植コードは失敗する可能性があります。
制限が少なく、int
と同じかそれ以上の速さでなければならないので、私は一般的にはstd::intfastN_t
を好むでしょう。 int
を受け入れる関数にstd::int32_t
を渡すときあなたはsizeof(int)
は16ビットのみである場合は特に、プロモーションおかしなに遭遇するかもしれないので
はまた、ほとんどのC++コードはどこにでもint
を使用しています。
多くのAPIは、非固定型の値を受け入れたり返したりします。例えば、ファイル記述子がタイプint
、ファイルオフセットやサイズであるタイプoff_t
とstrtol()
long
を返すのです。このような値を固定サイズのタイプから盲目的に変換すると、一部のマシンでオーバーフローが発生する可能性があります。
保証幅タイプ(intN_t
)は、単に適切な「標準」、整数タイプに型定義されています。プラットフォームが適切なタイプ(例えば、36ビットの整数を使用する)を持たない場合、保証されたタイプのtypedefを提供することはできません。 これは、パフォーマンスがほとんど引数になり得ないことを意味します。
(この点で)最大の移植のための一般的なガイドラインは、あなたのアルゴリズムは、ビットの正確な数を要求する場合にのみ、デフォルトで「標準」整数型と保証幅のタイプを使用することです。 標準の整数型は、関連する規格で保証されているものと同じ幅であることが前提です(8ビットのchar
、16ビットのint
、32ビットのlong
、コンパイラがサポートしている場合は、64ビットのlong long
)。
あなたがあなたのタイプのサイズは、それが機能だために重要であるデータを持っている場合は、あなたが定義したサイズと種類を使用する必要があります。しかし、例えば、あなたが合理的に期待できるint範囲(例えば、1〜1000ループカウンタ)内にあるコードの場合、int_32tを使用する理由はありません。それは16,32,64,36,18、または49ビットの整数ですべて正常に動作します。コンパイラに最適なサイズを選択させてください。
コンパイラがアーキテクチャにとって「最適な選択」ではない固定サイズの整数に対してコードを悪化させる可能性があります。
もちろん、ネットワーク上またはファイルに提示されているすべてのデータは、固定サイズを持っている必要があります。同様に、インタフェース境界を越えてバイナリ互換性が必要なインタフェースを持つ場合、定義されたサイズの型を使用することは、サイズが問題になるのを避けるために非常に便利です。
- 1. gmpで固定サイズの整数...?
- 2. CSSで固定サイズの代わりに相対サイズを使用する
- 3. 整数の代わりに浮動小数点を返す
- 4. Javaのジェネリックのリターンはint []の代わりに整数[]
- 5. Haskellに固定小数点演算子がありますか?
- 6. VisibleDeprecationWarning:整数の代わりに非整数を使用すると、将来エラーが発生します
- 7. WPFの固定比例サイズ調整
- 8. C++の固定幅整数リテラル?
- 9. 固定長の大きな整数
- 10. Javaの固定サイズ配列の代わりに?
- 11. Python Svmlightエラー:DeprecationWarning:整数の代わりに非整数を使用すると、将来エラーが発生する
- 12. 3つのSPAN/DIVタグを調整する - 左固定、右固定、中塗り
- 13. リンクの代わりにボタンを使用する利点はありますか?
- 14. ionic2 ion-checkbox - booleanの代わりに整数を使用する
- 15. long文の代わりに変数を使用しますか?
- 16. unsigned intの代わりにsize_tを使用する利点はありますか?
- 17. 固定幅の整数のフォーマット指定子は?
- 18. 整数型の最大値の定数はありますか?
- 19. ページあたりの固定数を
- 20. Dartで固定長のリストを使用するとパフォーマンス上の利点はありますか?
- 21. Matlabの固定小数点
- 22. 固定小数点のメガドロップダウンメニュー
- 23. ポインタの代わりにグローバル変数を使用する利点はありますか?
- 24. ES2015シンボルは、文字列の代わりに固有の定数値として使用できますか?
- 25. 固定小数点の周りの三角を回転する
- 26. 固定幅のSKLabelNodeに合わせてテキストサイズを調整する
- 27. 整列は、ナビゲーションで固定
- 28. CKEditorは浮動小数点の代わりに画像を整列します
- 29. 固定サイズのコンテンツを自動調整するTextBoxコントロール
- 30. 32ビット固定長のバイナリで整数を出力する
私のコードでは正確なサイズはほとんど問題ではないことがわかりました。そのような場合は、固定長の整数を使用するだけですっきりして、移植性が向上します。あなたはビットサイズを知る必要がありますか? – delnan
私はそれがあなたがしたいと思う仮定になると思います。特定の値が常にアーキテクチャの正確なビット数を持つと仮定したいですか?もしそうなら、固定サイズの整数が正しい選択かもしれません。そうでなければ、特定の最小ビット数を保証するタイプを使用したいかもしれません。 –