省略数据类型(例如“unsigned”而不是“unsigned int”)

时间:2010-11-30 16:10:25

标签: c++ c types

我知道如果在C / C ++代码中以这种方式省略数据类型声明:unsigned test=5;,编译器会自动将此变量设为int(在本例中为unsigned int)。我听说它是​​C标准,它适用于所有编译器。

但是我也听说这样做是不好的做法。

你怎么看?我应该真的键入unsigned int而不只是unsigned吗?

shortlonglong long也是数据类型吗?

4 个答案:

答案 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 intlong intsigned任何内容(char或位域除外)因为它会增加杂乱并减少80列中可以容纳的有意义的代码量。 (或者更可能的是,鼓励人们编写不适合80列的代码......)