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


87

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

unsigned Rotate(unsigned object, int count)

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

回答:


92

上記のリンクから:

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

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


それはC99とMISRAがそうすることを許可されていますか?
nowox 2017

42

整数型:

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  (is signed or unsigned depending on the implmentation)
signed char
unsigned char

1
@Firas:Cであることがわかっています。ImplicitintはISOC99の一部でも
ISOC

4
'unsigned'を(それ自体で)使用して 'unsigned int'型を宣言することは、C ++では標準です。現在の標準では、7.1.5.2 [dcl.simple.type]には、使用される実際の型に対する各型宣言を識別するテーブルがあります。そのテーブルには、「unsigned」宣言から「unsignedint」型への対応があります。
デビッド・ロドリゲス- dribeas

2
charはsignedcharまたはunsignedcharと同じ動作をしますが、何があっても別のタイプのままであることに注意してください。

@Firas:セクション:3.9.1基本タイプを参照してください。Paragrah 2:<quote>「signedchar」、「short int」、「int」、「long int」、「longlongint」の5つの標準符号付き整数タイプがあります。</ quote>
Martin York

21

unsignedキーワードはデフォルトでC ++のデータ型になりますか

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

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

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

ただし、signedとunsignedは、スタンドアロンの型指定子として使用することもできます。つまり、それぞれsignedintとunsignedintと同じです。次の2つの宣言は同等です。

unsigned NextYear;
unsigned int NextYear;

3
では、それは「はい」ではありませんか?タイプなしで使用した場合、デフォルトでintになりますか?
2010年

ありがとうございました!英語は私の第一言語ではなく、符号なしデータ型の意味に戸惑いました。誰の署名が含まれていますか?名詞記号からのものである可能性があるとは思いもしませんでした...:D
user74200 2017年

キーワードshortlong型修飾子でもあります。あなたが書くならばshort s、それは実際に意味するのshort int sと同じようunsigned uに、実際にはを意味しunsigned int uます。(およびunsigned short意味unsigned short int
Ben Voigt 2018年

8

C ++リファレンスでunsignedというキーワードについて読むことができます

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

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

そしてそれが署名されたとき、これはあなたがそれを分割する必要があることを意味し、-20億から+20億を残します。

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

ウィキペディアには、これに関する情報がもう少しあります。


2
私はほとんどのことを自分で歌うのが好きです。おいしいカーボンとキャラメル化!
オムニファリアス2010年

1
編集のタイプミスはどうですか?...それが「編集」ボタンの目的です!
フィリップエクバーグ2010年

3

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.