ホームページ >運用・保守 >Linuxの運用と保守 >Linux では何バイト不足ですか?

Linux では何バイト不足ですか?

WBOY
WBOYオリジナル
2022-07-13 10:40:464375ブラウズ

Linux では、short は 32 ビット プラットフォームと 64 ビット プラットフォームの両方で 2 バイトを占めますが、Linux では、long と void (C 言語では void は「不定型」) のみが 4 バイトを占めます。 32 ビットおよび 64 ビットでは 8 バイト。

Linux では何バイト不足ですか?

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux では short は何バイトあるのか

Linux では何バイト不足ですか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。