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

rhi*_*ino 34 c c++ types

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

我也听说这样做被认为是一种不好的做法.

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

short,long而且long long还数据类型?

Kon*_*lph 55

unsigned 是一种数据类型!它恰好是别名unsigned int.

当你写作时,unsigned x;没有省略任何数据类型.

int与C中存在的"default " 完全不同(但不是在C++中),你真的省略了声明上的类型,C自动推断出那种类型int.

至于风格,我个人更喜欢明确,因此写unsigned int.另一方面,我目前正在参与一个只需编写的常规库unsigned,所以我这样做了.

  • +1:对.`unsigned`实际上只是`unsigned int`的别名 (4认同)
  • @rhino:是的.您提到的每个都是不同的数据类型 (2认同)
  • 在C99中,`unsigned`*是*unsigned int`的别名,与C++相同(见第6.7.2节). (2认同)
  • +1 表示更喜欢显式声明但遵守编码标准。 (2认同)

ste*_*anv 6

我甚至会更进一步使用stdint的uint32_t类型.
这可能是一个品味问题,但我更喜欢知道我正在使用什么原始优于每个平台优化的一些古老考虑.

  • 但是`std :: uint32_t`不是**"原始".它是一个可选的`typedef`类型,必须具有正好32位,可能是也可能不是原语. (3认同)

Joh*_*ing 5

正如@Konrad Rudolph所说,unsigned 一种数据类型.它真的只是一个别名unsigned int.

至于使用unsigned不良做法的问题?我会说不,使用unsigned数据类型说明符没有任何问题.unsigned int在我看来,专业人士不会被抛出,任何表示你必须使用的编码标准都是不必要的严苛考验.