web-dev-qa-db-ja.com

C ++の符号なしキーワード

符号なしキーワードはデフォルトでC++の特定のデータ型ですか?プロトタイプのクラスの関数を作成しようとしています:

unsigned Rotate(unsigned object, int count)

しかし、unsignedが何を意味するのか本当にわかりません。 unsigned intのようなものではないでしょうか?

81
Crystal

上記の link から:

これらのタイプのいくつかは、signed、unsigned、short、およびlongのキーワードを使用して変更できます。これらの型修飾子の1つが単独で使用される場合、intのデータ型が想定されます

これは、作成者がintを使用していると想定できることを意味します。

90
futureelite7

整数型:

short            -> signed short
signed short
unsigned short
int              -> signed int
signed int
unsigned int
signed           -> signed int
unsigned         -> unsigned int
long             -> signed long
signed long
unsigned long

Charに注意してください:

char  (is signed or unsigned depending on the implmentation)
signed char
unsigned char
38
Martin York

符号なしキーワードのデフォルトはC++のデータ型ですか

はい、署名付きおよび署名なしもスタンドアロンの型指定子として使用できます

整数データ型char、short、long、およびintは、表現する必要がある数値の範囲に応じて、符号付きまたは符号なしのいずれかにできます。符号付きの型は正の値と負の値の両方を表すことができますが、符号なしの型は正の値(およびゼロ)のみを表すことができます。

Nビットを含む符号なし整数は、0〜2の値を持つことができますn -1(2n 異なる値)。

ただし、signedおよびunsignedは、スタンドアロンの型指定子としても使用できます。これは、それぞれsigned intおよびunsigned intと同じことを意味します。次の2つの宣言は同等です。

unsigned NextYear;
unsigned int NextYear;
21
Prasoon Saurav

キーワード C++リファレンスでは未署名 について読むことができます。

この問題には、署名付きと署名なしの2つの異なるタイプがあります。整数のデフォルトは符号付きで、負の値をとることができます。

32ビットシステムでは、整数は32ビットであるため、最大40億の値を含めることができます。

そして、署名されたとき、これはあなたがそれを分割する必要があることを意味します。

符号なしの場合、値cannotには負の数が含まれないため、整数の場合、これは0〜+40億を意味します。

Wikipedia でこれについてもう少し情報があります。

8
Filip Ekberg

はい、それはunsigned intを意味します。以前は、Cでデータ型を指定しなかった場合、intを仮定した場所が多くあったことがありました。これは、たとえば、関数の戻り値のタイプの試行でした。

このいぼはほとんど根絶されましたが、ここで最後の痕跡に遭遇しています。私見、あなたが経験している混乱のようなものを避けるために、コードはunsigned intと言うように修正されるべきです。

3
Omnifarious