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

问题描述 投票:2回答:2

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

short Number = (short)1;

但是铸造它与不这样做有什么区别:

short Number = 1;

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

c literals short
2个回答
3
投票

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

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

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

#define DEFAULT_CONDITION ((short)1)

short condition = DEFAULT_CONDITION ;

3
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.