ホームページ > バックエンド開発 > C++ > `sizeof('a')` が C では 4 を返すのに、C では 1 を返すのはなぜですか?

`sizeof('a')` が C では 4 を返すのに、C では 1 を返すのはなぜですか?

Linda Hamilton
リリース: 2024-12-29 12:28:10
オリジナル
640 人が閲覧しました

Why Does `sizeof('a')` Return 4 in C but 1 in C  ?

C と C の間の文字のサイズの不一致を理解する

C と C で文字を扱うとき、プログラマは、しばしば混乱を招く不一致に遭遇します。彼らのサイズ。 C では、 sizeof('a') という式は値 4 を返しますが、 C では 1 を返します。この不可解な違いは、これらの言語での文字の処理方法の根本的な違いに起因しています。

C の文字定数

C では、文字は通常、文字定数と呼ばれる整数として表されます。これらの定数は 32 ビット整数で格納され、サイズは 4 バイトになります。これは、4 と評価される C の式 sizeof('a') で明らかです。ただし、この整数に格納される実際の値は、文字の ASCII コードであり、'a' の場合は 97 です。

C の文字型

C とは異なり、C では文字を表すための専用の char 型が導入されています。この型は整数とは異なり、sizeof(char) によって決定される 1 バイトのみを占有します。したがって、 'a' が C で使用される場合、それは char リテラルとして扱われ、そのサイズは 1 として正しく報告されます。

歴史的な理由

矛盾C と C の文字サイズの間には歴史的なルーツがあります。初期のコンピューティング システムでは 32 ビット整数が標準であり、C では文字にこの規則が自然に採用されました。しかし、システムが進化し、メモリがより豊富になるにつれて、C では専用の char 型が登場し、より効率的に文字を格納できるようになりました。

プログラマへの影響

この違いは、文字サイズは、言語を越えたプロジェクトで作業したり、 C と C の間でコードを移植したりするプログラマーに影響を与える可能性があります。開発者は、予期しない動作やエラーを避けるために、これらの言語の文字定数の異なるセマンティクスを認識する必要があります。

以上が`sizeof('a')` が C では 4 を返すのに、C では 1 を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート