[解決済み] C言語ではsizeofは型のバイト数、オクテット数のどちらを返すのでしょうか?
質問
C や variants では (仮想マシンの java とは異なり) ターゲットによってプリミティブ型のサイズが大きく異なることがあります。
stdint.h
そして、その場合でも、実装がそれらをサポートする必要があります。
とにかく仮に(最近のマシンではバイトはオクテットなので、ネットワーク的には(ASCII)だと思いますが)、sizeofはデータ型のサイズをバイトで返すのかオクテットで返すのか?
どのように解決するのですか?
回答
sizeof
で型のサイズを返します。
バイト
.
例
sizeof(char)
は100%保証されています。
1
しかし、これは1オクテット(8ビット)であることを意味するものではありません。
規格で証明されています。
6.5.3.4 のポイント 2 にある。
sizeof 演算子は、オペランドのサイズ(バイト単位)を返します。 である可能性があります。 式、または括弧で囲まれた型名です。サイズは,型から決定される。 オペランドを指定します。結果は整数になる。オペランドの型が可変長配列の場合、結果は整数となる。 そうでない場合は、オペランドは評価されず、その結果は 整数定数。
...
char 型、unsigned char 型、signed char 型のオペランドに適用した場合。 (またはその修飾バージョン) の結果は 1 です。 . オペランドが配列である場合、その配列は オペランドに適用される場合、結果は配列の総バイト数となる。 構造体または共用体である場合は,そのオブジェクトの総バイト数となる。 内部および末尾のパディングを含む。
また、3.6項のポイント3.
バイトは連続したビット列で構成され、その数は実装で定義される
関連
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] 構造体のsizeofは、なぜ各メンバーのsizeofの合計と等しくないのですか?
-
[解決済み] printfは、フォーマット文字列の中に改行がないと、呼び出し後にフラッシュしないのはなぜですか?
-
[解決済み] なぜsizeof(x++)はxをインクリメントしないのですか?
-
[解決済み] sizeof'(配列を指すポインタ)を見つけるにはどうしたらいいですか?
-
[解決済み】sizeof(あるポインタ)は常に4と同じか?
-
[解決済み] なぜ "sizeof(a ? true : false)" は4バイトの出力をするのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】strcmpが機能しない
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】int型配列へのポインタのスカラ・イニシャライザの過剰要素
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない
-
[解決済み] エラー: `itoa` はこのスコープで宣言されていません。
-
[解決済み】警告:式の結果が未使用の場合
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?