15

以下にリストされているプログラムでは、sizeof(int) と sizeof(long) は私のマシンでは同じです (どちらも 4 バイト (または 32 ビット) に等しい)。私が知る限り、A long は 8 バイトです。これは正しいです?私は64ビットマシンを持っています

#include <stdio.h>
#include <limits.h>

int main(void){
    printf("sizeof(short) = %d\n", (int)sizeof(short));
    printf("sizeof(int) = %d\n", (int)sizeof(int));
    printf("sizeof(long) = %d\n", (int)sizeof(long));
    printf("sizeof(float) = %d\n", (int)sizeof(float));
    printf("sizeof(double) = %d\n", (int)sizeof(double));
    printf("sizeof(long double) = %d\n", (int)sizeof(long double));
    return 0;
}
4

4 に答える 4

5

C は Java でも C# でもありません。他の人が書いたように、C 仕様では最小の長さと相対的な長さが規定されています。なんで?C は低レベルであり、これまでに製造されたほぼすべてのハードウェアでコンパイルおよび実行できるように設計されています。

仕様がプログラマーにあまりにも多くのことを約束している場合、ハードウェアがそのようなことをサポートしていない場合、その実装はトリッキー (かつ遅く) になる可能性があります。Java と C# の開発者はあまり気にしません。より高いレベルの仕事のための言語の便利さを好み、すべての約束 (または少なくともそれらのほとんど) を実現するための大規模な仮想マシンをインストールすることを躊躇しません。

C プログラマーは、機械命令レベルでもコードを制御したいと考えています。ハードウェアを完全に制御します。この方法でのみ、すべてのハードウェア機能を使用でき、最大のパフォーマンスに到達できます。ただし、使用しているハードウェアに関する仮定には注意が必要です。いつものように、大きな力には大きな責任が伴います。

それを説明するだけです:Cは8ビットバイトを想定していません。を参照CHAR_BITしてください<limits.h>

関連する質問はC の整数のサイズです

于 2013-09-19T17:44:47.197 に答える