Linux では、short は 32 ビット プラットフォームと 64 ビット プラットフォームの両方で 2 バイトを占めますが、Linux では、long と void (C 言語では void は「不定型」) のみが 4 バイトを占めます。 32 ビットおよび 64 ビットでは 8 バイト。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
long (長整数型)、void* (c では) しかないことがわかります。言語、void は「タイプを決定しない」)、32 ビットで 4 バイト、64 ビットで 8 バイト。
拡張知識
char は 1 バイト、short は 2 バイト、int、float、long はすべて 4 バイト、double は 8 バイトを占めます
ポインタの長さはアドレス バスに関係します。ポインタはアドレスを記録するため、32 ビットのものは 4 バイト、64 ビットのものは 8 バイトになります。
問題が見つかりました。次のコードは、win10 64 ビット システムで実行されました。int は 8 バイトを占めるはずですが、後で間違っていると考えました。作成したプロジェクトは win32 コンソール アプリケーションであり、コンパイラは 32 ビットであることを意味します - 「int が占めるバイト数はコンパイラだけでなく、CPU、仮想マシン、またはオペレーティング システムによっても決まりますが、最終的にはコンパイラによって決まります。」
64 ビット win10 次に、コードブロック win32 コンソールでの
#include "iostream" using namespace std; int main() { double *p = NULL; cout<<sizeof(char)<<endl; cout<<sizeof(short)<<endl; cout<<sizeof(int)<<endl; cout<<sizeof(float)<<endl; cout<<sizeof(long)<<endl; cout<<sizeof(double)<<endl; cout<< sizeof(char *) << sizeof(short *) << sizeof(int *) << sizeof(p) << sizeof(double *)<<endl; return 0; }
の結果は次のとおりです。
1 2 4 4 4 8 44444
上記からわかるように、char は 1 バイトを占め、short は 2 バイトを占めます。 、int、float、long はすべて 4 バイトを占有します。 、double は 8 バイトを占有し、任意のタイプのポインタは 4 バイトを占有します。
推奨学習:Linux ビデオ チュートリアル
以上がLinux では何バイト不足ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。