【发布时间】:2014-07-03 08:04:43
【问题描述】:
在本网站的另一个问题中已经确定,C 中没有文字后缀,可以执行以下操作:
short Number = (short)1;
但是投射和不投射有什么区别:
short Number = 1;
您使用哪种以及编译器如何以不同方式处理它们是否重要?
【问题讨论】:
-
当你像这样声明一个类型化变量时,它会“自动转换”为所述类型,所以没有区别。
-
这很重要,因为默认文字是 int,所以 int 的范围更大,因为 Mayarz 说它被隐式转换为 short,但是在高警告级别下,编译器不会喜欢这样(并且会总是喜欢明确的演员表)。
-
@harper : "取决于编译器的心情";这表明它不是确定性的并且可能会有所不同。它可能取决于编译器实现、编译器版本和编译器选项,而不是它的“心情”。无论哪种方式,两者都是有效的 C 并且在语义上是相同的 - C 编译器必须接受其中任何一种,而不管它可能输出的任何诊断信息。