(联合国)签署短文(C)

时间:2014-07-03 08:04:43

标签: c literals short

在本网站的另一个问题中已确定C中没有简短的后缀,并且可以执行以下操作:

short Number = (short)1;

但是施放它与不这样做有什么区别:

short Number = 1;

使用哪个以及编译器如何处理它们有什么关系?

2 个答案:

答案 0 :(得分:3)

隐式演员和强制演员的效果没有区别,强迫演员主要是"纪录片" - 它说"我做了这故意"

显式强制转换使潜在的维护者明白,他们的类型是故意short,不应更改为与初始化者匹配。它还可以用于使编译器或静态分析工具警告静音。但是,如果你提供的初始化程序太大而不能做空 - 它也会使任何警告都无声。

显式强制转换在宏定义中可能更有用,例如:

#define DEFAULT_CONDITION ((short)1)

short condition = DEFAULT_CONDITION ;

答案 1 :(得分:3)

在这两种情况下,代码的行为都是相同的。

但是,如果您将int分配给short(带有隐式转换),则某些代码检查程序/编译器可能会发出警告。

我知道的大多数工具都不会对文字值这样做。他们检查已知的文字是否真的适合较小的类型。