C ++中的Unsigned关键字

时间:2010-01-20 08:07:57

标签: c++ unsigned

unsigned关键字是否默认为C ++中的特定数据类型?我正在尝试为原型编写一个类的函数:

unsigned Rotate(unsigned object, int count)

但我并不真正得到unsigned的含义。不应该像unsigned int或其他什么?

5 个答案:

答案 0 :(得分:88)

来自上面的link

  

可以使用signed,unsigned,short和long关键字修改其中一些类型。当其中一个类型修饰符本身使用时,假定数据类型为int

这意味着您可以假设作者正在使用整数。

答案 1 :(得分:38)

整数类型:

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

答案 2 :(得分:21)

  

unsigned关键字是否默认为C ++中的数据类型

是的,signed和unsigned也可以用作独立类型说明符

整数数据类型char,short,long和int可以是有符号或无符号的,具体取决于需要表示的数字范围。有符号类型可以表示正值和负值,而无符号类型只能表示正值(和零)。

包含n位的无符号整数的值可以在0到2之间 n - 1 (这是2 n 不同的值)。

但是,signed和unsigned也可以用作独立类型说明符,分别与signed int和unsigned int相同。以下两个声明是等效的:

unsigned NextYear;
unsigned int NextYear;

答案 3 :(得分:8)

您可以阅读关键字unsigned in the C++ Reference

此问题有两种不同的类型,签名和非签名。整数的默认值是有符号的,这意味着它们可以有负值。

在32位系统上,整数是32位,这意味着它可以包含~40亿的值。

当签名时,这意味着你需要拆分它,留下20亿到+20亿。

如果它是无符号的,则值不能包含任何负数,因此对于整数,这将意味着0到+40亿。

有关Wikipedia的更多信息。

答案 4 :(得分:3)

是的,这意味着unsigned int。过去,如果你没有在C中指定数据类型,那么很多地方都只假设int。例如,这是函数返回类型的尝试。

这种疣大多已被根除,但你在这里遇到了它的最后痕迹。恕我直言,代码应该固定为unsigned int,以避免您遇到的那种混乱。