以下代码无法编译,因为x
的值为long
值。因此,在第二行中,不可能为y
分配长值。
long x = 10;
int y = 2 * x;
我的问题是:
第一行在L
类型的变量中没有后缀long
,是否应该假设它具有int
类型?
答案 0 :(得分:0)
在执行操作之前,您需要转换为int
。
long x = 10;
int y = 2 * (int)x;
答案 1 :(得分:0)
您的操作结果必须是int
。如果你不做缩小转换o.k.a.在操作中将任何原始数字类型的转换操作转换为int,这意味着您的操作结果将具有更宽范围的数字。通过强制转换,你让编译器知道你确定你的结果将在int的范围内,并且它知道你似乎不会丢失信息(即使你不投,你也可以并期望双重例如,但这是一个完全不同的事情)。您可以找到关于您的问题here的问题的绝佳解释。