0

C++ の語長、文字サイズ、整数サイズ、およびバイトの関係は何ですか?

4

6 に答える 6

7

標準では、特定の型に最小サイズ (short は少なくとも 16 ビット、int は少なくとも 16 ビットなど) が必要であり、型のいくつかのグループが順序付けられている ( sizeof(int)>= sizeof(short)>= sizeof(char)) 必要があります。

于 2009-03-30T18:08:59.920 に答える
5

C++ では、char は、実装の基本文字セット内の任意の文字を保持するのに十分な大きさでなければなりません。

int「実行環境のアーキテクチャによって提案される自然なサイズ」を持っています。これは、intのサイズが 32 ビット以上である必要がないことを意味することに注意してください。16 ビットの実装intが一般的です (MS-DOS に組み込まれていると考えてください)。

以下は、C++98 および C99 標準のさまざまな部分から抜粋したものです。

  • long int少なくとも同じ大きさでなければなりませんint
  • int少なくとも同じ大きさでなければなりませんshort
  • short少なくとも同じ大きさでなければなりませんchar

それらはすべて同じサイズである可能性があることに注意してください。

また (2 の補数の実装を想定):

  • long int少なくとも 32 ビットである必要があります
  • int少なくとも 16 ビットである必要があります
  • short少なくとも 16 ビットである必要があります
  • char少なくとも 8 ビットである必要があります
于 2009-03-30T18:25:45.777 に答える
4

標準は、プロセッサが使用するこの「単語」を認識していません。しかし、「int」型は実行環境の自然なサイズでなければならないと言っています。しかし、64 ビット環境の場合でも、int は通常 32 ビットのみです。したがって、標準用語の「単語」には、一般的な意味はほとんどありません (もちろん、一般的な英語の「単語」を除く)。

文字サイズは文字の大きさです。話すキャラクターにもよります。文字型には、char、unsigned char、signed char があります。また、 wchar_t は、任意のサイズを持つことができる文字を格納するために使用されます (実装によって決定されますが、基になる型として整数型のいずれかを使用する必要があります。列挙型と同様)。一方、char/signed char または unsigned char は 1 バイトである必要があります。つまり、1 バイトには 1 文字と同じ数のビットがあります。char 型の 1 つのオブジェクトが 16 ビットであると実装が言う場合、バイトも 16 ビットです。

現在、1バイトは1文字が占めるサイズです。それはユニットであり、特定のタイプではありません。メモリにアクセスできる単位であるというだけで、それ以上のことはありません。つまり、ビット フィールドへのポインター アクセスはありませんが、1 バイトから始まる単位へのアクセスは可能です。

「整数サイズ」はかなり広くなりました。どう言う意味ですか?bool、char、short、int、long およびそれらの符号なしの対応するものはすべて整数です。それらの範囲は、私が「整数サイズ」と呼ぶものであり、C標準で文書化されています-C++標準に引き継がれています。signed char の場合、範囲は -127 <-> 127 です。short と int の場合は同じで、-2^15+1 <-> 2^15-1 で、long の場合は -2^31+1 < です。 -> 2^31-1. それらの符号なしの対応する値は、それぞれ 0 から 2^8-1、2^16-1、および 2^32-1 までの範囲です。ただし、これらは最小サイズです。つまり、int の最大サイズはどのプラットフォームでも 2^14 ではない可能性があります。これはもちろん 2^15-1 より小さいためです。これらの値については、最小ビット数が必要です。char の場合は 8、short/int の場合は 16、long の場合は 32 です。-128-127たとえば、signed charの代わりに。

于 2009-03-30T18:29:50.353 に答える
3

word標準 C++ にはorというデータ型がありませんbyte。残りは範囲として明確に定義されています。ベースはof 個のビットcharを持つa です。CHAR_BITSCHAR_BITS の最も一般的に使用される値は 8 です。

于 2009-03-30T18:05:21.877 に答える
1

sizeof( char ) == 1 ( 1 バイト ) (c++ では、C では - 指定なし)
sizeof( int ) >= sizeof( char )
word - C++ 型ではありません。通常、コンピューター アーキテクチャでは 2 バイトを意味します。

于 2009-03-30T18:30:57.057 に答える
0

種類は、関係の意味によって異なります。数値型のサイズは、通常、マシン ワード サイズの倍数です。バイトはバイトです - 8ビット、それ以上でもそれ以下でもありません。文字は、標準では単一の符号なしバイトとして定義されていると思います(詳細については、ARMを確認してください)。

一般的なルールは、データ型の実際のサイズについて仮定しないことです。標準では、「long」整数が「int」と同じサイズまたはそれより大きいなど、型間の関係が指定されています。言語の個々の実装は、それらにとって便利なタイプの特定のサイズを選択します。たとえば、64 ビット プロセッサ用のコンパイラは、32 ビット プロセッサ用のコンパイラとは異なるサイズを選択します。

sizeof() 演算子を使用して、(特定のターゲット アーキテクチャで) 使用しているコンパイラの特定のサイズを調べることができます。

于 2009-03-30T18:06:49.317 に答える