1. ホーム
  2. c

[解決済み] int32、int、int32_t、int8、int8_tの違いについて

2022-03-06 08:03:39

質問

私は、データ型 int32_t を、最近C言語で作成しました。 32ビットを格納することは知っていますが、その前に intint32 も同じですか?

また char をプログラム内で使用することができます。 プログラムの中で int8_t の代わりに?どう違うのでしょうか?

まとめますと。 C言語のint32、int、int32_t、int8、int8_tの違いは何ですか?

どのように解決するのですか?

int32int32_t の間に、(同様に int8int8_t ) その違いはとてもシンプルで、C言語規格では int8_tint32_t という名前のものは定義していません。 int8 または int32 -- 後者は(存在するとすれば)おそらく他のヘッダかライブラリに由来するものでしょう(おそらく int8_tint32_t をC99で参照)。

平野 int は、他とかなり違いますね。どこが int8_tint32_t はそれぞれ指定されたサイズを持っています。 int は、任意のサイズ >= 16ビットです。時代によって、16ビットと32ビットの両方がそれなりに一般的でした(64ビット実装の場合は、おそらく64ビットであるべきでしょう)。

一方 int は、すべてのC言語の実装に存在することが保証されており、ここで int8_tint32_t はありません。しかし、このことがあなたにとって重要かどうかは疑問の余地があるでしょう。小規模の組み込みシステムや古いコンパイラでC言語を使うのであれば、問題になるかもしれません。デスクトップやサーバマシンで最新のコンパイラを使ってC言語を主に使うのであれば、おそらく問題にはならないでしょう。

おっと-- char . あなたは int8_t ちょうど8ビットであることが保証された整数型が必要な場合(に限る)、charの代わりにcharを使います。文字を格納したい場合は、おそらく char の代わりに。そのサイズは(ビット数で)変わることがありますが、正確に1バイトであることが保証されています。しかし、ひとつだけ奇妙なことがあります。 char は符号付きか符号なしです(多くのコンパイラは、コンパイル時のフラグによってどちらかにすることができます)。もし、符号付きか符号なしかを確認する必要がある場合は、明示的に指定する必要があります。