我知道如果在C / C ++代码中以这种方式省略数据类型声明:unsigned test=5;
,编译器会自动将此变量设为int(在本例中为unsigned int)。我听说它是C标准,它适用于所有编译器。
但是我也听说这样做是不好的做法。
你怎么看?我应该真的键入unsigned int
而不只是unsigned
吗?
short
,long
和long long
也是数据类型吗?
答案 0 :(得分:50)
unsigned
是一种数据类型!它恰好是unsigned int
的别名。
当您撰写unsigned x;
时,您 省略任何数据类型。
这与C中存在的“default int
”完全不同(但在C ++中不存在!),其中您确实省略了声明上的类型,C自动将该类型推断为int
。
至于风格,我个人更喜欢明确,因此写unsigned int
。另一方面,我现在参与了一个只写unsigned
的惯例的库,所以我这样做了。
答案 1 :(得分:5)
正如@Konrad Rudolph所说,unsigned
是数据类型。它实际上只是unsigned int
的别名。
关于使用unsigned
是不良做法的问题?我会说不,使用unsigned
作为数据类型说明符没有任何问题。专业人士不会因此而被抛弃,在我看来,任何表示你必须使用unsigned int
的编码标准都是不必要的严厉。
答案 2 :(得分:5)
我甚至会更进一步,使用stdint的uint32_t类型 这可能是一个品味问题,但我更喜欢知道我使用的原始资料,而不是对每个平台进行优化的一些古老考虑。
答案 3 :(得分:2)
无端冗长被视为有害。我永远不会写unsigned int
或long int
或signed
任何内容(char
或位域除外)因为它会增加杂乱并减少80列中可以容纳的有意义的代码量。 (或者更可能的是,鼓励人们编写不适合80列的代码......)