如果将数字分配给不带后缀的长类型,是否会发生类型转换"L"

Does type conversion happen if assigning a number to a long type without postfix "L"

本文关键字:是否 类型转换 类型 分配 数字 后缀 如果      更新时间:2023-10-16

我的问题是,如果(1)中的以下赋值涉及类型转换,即从int到long?

(1)
    long i=0;
    ....
    i =2; 
(2)
    long i=0;
     .....
    i = 2L

是的,它涉及转换。但是对于这样的文字,转换通常会在编译时发生,所以附加L不会有任何真正的区别,除非你发现代码中有L更可读(我通常不会)。

在某些情况下,您可以添加后缀以获得与没有后缀的结果不同的结果,但您所展示的结果不属于这一类。

从技术上讲,是的,这是一个转换。不带后缀的整数字面值的类型是int,只要该字面值的值确实可以用int表示。对于值02来说当然是这样。因此,在i = 2中,右边是int,必须转换为long

然而,这只是语言规则下的转换。编译器无疑会生成直接将i的值设置为2的代码,而不是将2存储在int变量中,然后执行运行时转换的代码。