![](/img/trans.png)
[英]Standard guarantees for aliases of integer types in C/C++? E.g.: Is “unsigned” always equal to “unsigned int”?
[英]Omitting the datatype (e.g. “unsigned” instead of “unsigned int”)
我知道如果在C / C ++代码中以这种方式省略数据类型声明: unsigned test=5;
,编译器会自动将此变量设为int(在这种情况下为unsigned int)。 我听说这是C标准,它将在所有编译器中正常工作。
但是我也听说这样做是一种不好的做法。
你怎么看? 我应该真的输入unsigned int
而不是unsigned
吗?
short
, long
和long long
也是数据类型吗?
unsigned
是数据类型 ! 碰巧是unsigned int
别名。
当您编写unsigned x;
您不会忽略任何数据类型。
这与C(但C ++中没有)中的“ default int
”完全不同,在C中您实际上省略了声明中的类型,C会自动推断出该类型为int
。
至于样式,我个人更喜欢露骨,因此写unsigned int
。 另一方面,我目前正在使用一个库,习惯上只写unsigned
,所以我改为这样做。
我什至更进一步,并使用stdint的uint32_t类型。
这可能是一个问题,但是我宁愿知道我正在使用什么原始语言,而不是出于对每个平台进行优化的古老考虑。
正如@Konrad Rudolph所说, unsigned
是数据类型。 它实际上只是unsigned int
的别名。
至于使用unsigned
的问题是不好的做法? 我会说不,使用unsigned
作为数据类型说明符没有任何问题。 在我看来,专业人士不会为此而烦恼,任何说您必须使用unsigned int
编码标准都是不必要的严厉。
无谓的冗长被认为是有害的。 我永远不会写unsigned int
或long int
或任何signed
( char
或bitfield除外),因为它会增加混乱并减少可容纳80列的有意义代码的数量。 (或更可能的是,鼓励人们编写不适合80列的代码...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.