如果为没有后缀“L”的长类型分配数字,是否会发生类型转换

时间:2014-07-02 16:22:55

标签: c++ int long-integer type-conversion

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

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

2 个答案:

答案 0 :(得分:2)

是的,它涉及转换。但是使用这样的字面值,转换通常会在编译时发生,因此附加L不会产生任何真正的区别,除非您发现代码在L处更具可读性(I通常不会。

在某些情况下,您可以附加后缀,以获得与您没有后缀的内容实际上不同的结果,但是您已经显示的结果不是'属于这一类。

答案 1 :(得分:0)

从技术上讲,是的,这是转换。只要文字的值确实可以用int表示,没有后缀的整数文字的类型是int。值02的情况确实如此。因此,在i = 2中,右侧是int,必须转换为long

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