如果将数字分配给不带后缀的长类型,是否会发生类型转换"L"
Does type conversion happen if assigning a number to a long type without postfix "L"
我的问题是,如果(1)中的以下赋值涉及类型转换,即从int到long?
(1)
long i=0;
....
i =2;
(2)
long i=0;
.....
i = 2L
是的,它涉及转换。但是对于这样的文字,转换通常会在编译时发生,所以附加L
不会有任何真正的区别,除非你发现代码中有L
更可读(我通常不会)。
在某些情况下,您可以添加后缀以获得与没有后缀的结果不同的结果,但您所展示的结果不属于这一类。
从技术上讲,是的,这是一个转换。不带后缀的整数字面值的类型是int
,只要该字面值的值确实可以用int
表示。对于值0
和2
来说当然是这样。因此,在i = 2
中,右边是int
,必须转换为long
然而,这只是语言规则下的转换。编译器无疑会生成直接将i
的值设置为2的代码,而不是将2存储在int
变量中,然后执行运行时转换的代码。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 模板中的类型转换
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- C++:用户定义的显式类型转换函数错误
- 将类指针类型转换为键时出错
- 通过引用传递参数时C++类型转换
- 将前向声明的类型转换为无效是否合法?
- 是否可以将一种函数类型转换为另一种采用相同参数但返回类型不同的函数类型
- 是否可以将类型转换推导为C 中的模板类型
- 如何检查Void指针是否可以转换为其他特定的指针类型
- 类型转换是否消耗额外的CPU周期?
- 类型转换是否在内部使用条件?(C / c++, c#)
- 如果将数字分配给不带后缀的长类型,是否会发生类型转换"L"
- 在c++中不使用转换构造函数是否可以进行类型转换?
- 在c++中是否可以对initializer_list进行类型转换?