sizeof char、int、long double ...は、コンパイラによって異なる場合があります。しかし、私は、C++ 11またはC11標準に従った、符号付きおよび符号なし基本整数型のサイズが同じであるという保証はありますか?sizeof(type)== sizeof(unsigned type)という保証はありますか?
答えて
C++ 11標準整数型について述べている:標準的な符号付き整数型のそれぞれについて
(§3.9.1/ 3)、対応する(しかし異なる)標準の符号なし整数型が存在します:同じ量のストレージを占有し、同じアライメント要件(3.11)を持つ「unsigned char」、「unsigned short int」、「unsigned int」、「unsigned long int」、および「unsigned long long int」対応する符号付き整数型。つまり、各符号付き整数型は、対応する符号なし整数型と同じオブジェクト表現を持ちます。同様に、拡張符号付き整数型のそれぞれには、対応する拡張符号なし整数型が存在し、同じ量の格納および整列要件があります。 [...]
答えははいです。 C11について
は、ここで対応する文(これはN1570からのものである)がある。
(§6.2.5/ 6)符号付き整数型のそれぞれについて、対応する(しかし異なる)があります(サイン情報を含む) ストレージの同じ量を使用し、同一のアラインメント要件を有する(符号なしのキーワードで指定された)符号なし整数 タイプ[...]
はい、完全な保証があることsizeof(符号付きの型)はsizeof(符号なしの型) unsignedはその範囲を拡大するために符号付きの型の負の数のスペースしか取っていないからです。
標準では、UINT_MAX > INT_MAX';サイン・マグニチュード・マシンはそれらを等しくすることができる。 – supercat
- 1. sizeof(std :: atomic <integer type>)== sizeof(整数型)は保証されていますか?
- 2. sizeof(T [N])== N * sizeof(T)は保証されていますか?
- 3. Windbgでsizeof(type)を取得する
- 4. のsizeofと関数テンプレート:はsizeof対のsizeof(&F)(&F <int>)
- 5. sizeof( 'ab')はsizeof(int)とC++で等しいですか?
- 6. "malloc(sizeof(struct a *))"と "malloc(sizeof(struct a))"は同じですか?
- 7. sizeof(int)がsizeof(int *)と異なるのはなぜですか?
- 8. C sizeof( 'a')= 4でsizeof(char)= 1の理由は何ですか?
- 9. コンパイル時にタイプに "bool operator ==(const type&、const type&)"というウェイテストがありますか?
- 10. はsizeof(*本)
- 11. sizeof and types、guarantee
- 12. NRLのContent-Typeはありますか?
- 13. についてはsizeof()クラス
- 14. はsizeof空のクラス
- 15. sizeof()std :: vector(C++)
- 16. c sizeof()はオーバーフローしますか?
- 17. なぜsizeof Variablename/sizeof * VariableNameは必要に応じて機能しませんか?
- 18. SAP/ABAPでTYPE、TYPES、TYPE-POOL、TYPE-POOLS、TYPE-GROUPとは何ですか?
- 19. なぜJavaにはsizeofがありません
- 20. Marshal.SizeOf(typeof(IntPtr))とsizeof(IntPtr)
- 21. (void)sizeof(0 [array])はどういう意味ですか?
- 22. sizeof(int **)はどういう意味ですか?
- 23. メイン関数内のsizeof(Array_Name)ユーザー定義関数内のsizeof(Array_Name)
- 24. AttributeError: 'Response'オブジェクトの属性に 'type'というエラーはありますか?
- 25. はブーストバリアントで最大のsizeof()
- 26. はsizeofメンバー演算エラー
- 27. Marshal.AllocHGlobal VS Marshal.AllocCoTaskMem、Marshal.SizeOf VSはsizeof()
- 28. "type as object"と "((type)object"の違いは何ですか?
- 29. (type&name)と(type * name)の違いは何ですか?
- 30. sizeofとunsigned char配列エラー? (C/C++)私は、この構造を書かれている
どういうわけか、不平等が意味をなさないタイプがない限り、私はそう思います。その場合、私はそれを聞いてうれしく思います。 – chris
sizeof charは常に1ですが、charは16ビットのような珍しいサイズを持つことができますが、sizeof charは1になり、32ビットタイプのsizeは2になります。 –