uint
とunsigned int
に違いはありますか?私はサイトを探していますが、すべての質問はC#またはC++を参照しています。 Cについての回答をお願いします。
LinuxでGCCを使用していることに注意してください。
uint
は標準タイプではありません-unsigned int
です。
一部のシステムでは、uintをtypedefとして定義できます。
typedef unsigned int uint;
これらのシステムでは同じです。しかし、uintは標準タイプではないため、すべてのシステムでサポートされていない可能性があるため、移植性はありません。
Erik、Teoman Soygul、taskinoorの回答を少し拡張しています
uintは標準ではありません。
したがって、このように独自の速記を使用することは推奨されません。
typedef unsigned int uint;
stdint.h を含め、代わりにプラットフォームの特異性を探す場合(たとえば、intが占有するビット数を指定する必要がある場合):
#include <stdint.h>
以下の整数の標準カテゴリを公開します:
特定の正確な幅を持つ整数型
特定の幅以上の整数型
少なくとも特定の指定された幅を持つ最速の整数型
オブジェクトへのポインターを保持するのに十分な幅の整数型
最大幅の整数型
例えば、
正確な幅の整数型
Typedef名int N _tは、幅N、パディングビットなし、2の補数表現を持つ符号付き整数型を指定します。したがって、int8_tは、正確に8ビットの幅を持つ符号付き整数型を示します。
Typedef名uint N _tは、幅Nの符号なし整数型を指定します。したがって、uint24_tは、幅がちょうど24ビットの符号なし整数型を示します。
定義する
int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t
ここでのすべての答えは、uint
の本当の理由に言及していません。
明らかにunsigned int
のtypedef
ですが、その有用性を説明していません。
本当の質問は、
なぜ誰かが基本型を短縮版にtypedefしたいのですか?
入力を節約するには?
いいえ、彼らは不必要にそれをしました。
C言語を検討してください。テンプレートを持たない言語。
どのようなタイプも保持できる独自のベクターをどのように打ち消しますか?
Voidポインターを使用して何かを行うことができますが、
しかし、テンプレートのより近いエミュレーションでは、マクロに頼ることになります。
したがって、テンプレートベクトルを定義します。
#define define_vector(type) \
typedef struct vector_##type { \
impl \
};
タイプを宣言します。
define_vector(int)
define_vector(float)
define_vector(unsigned int)
そして、生成時に、型は単一のトークンである必要があることを理解します。
typedef struct vector_int { impl };
typedef struct vector_float { impl };
typedef struct vector_unsigned int { impl };
unsigned int
は組み込み(標準)タイプであるため、プロジェクトをクロスプラットフォームにしたい場合は、常にunsigned int
すべてのコンパイラでサポートされることが保証されているため(したがって、標準)。