unsigned关键字是否默认为C ++中的特定数据类型?我正在尝试为原型编写一个类的函数:
unsigned Rotate(unsigned object, int count)
但我并不真正得到unsigned
的含义。不应该像unsigned int
或其他什么?
答案 0 :(得分:88)
答案 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
,以避免您遇到的那种混乱。