Loe*_*rio 16 c++ int casting long-integer
如何从long long转换为int,另一种转换回c ++?也有长长的特性,特别是它的最大尺寸,谢谢提前..
Kei*_*son 18
int保证至少16位宽.在现代系统中,最常见的是32位(即使在64位系统上).
long long,最初不存在于C++中,保证至少为64位宽.这几乎总是正好 64位宽.
将值从一个整数类型转换为另一个整数类型的常用方法就是分配它.任何必要的转换都将隐式完成.例如:
int x = 42;
long long y = 9223372036854775807;
y = x; // implicitly converts from int to long long
x = y; // implicitly converts from long long to int
Run Code Online (Sandbox Code Playgroud)
对于缩小转换,目标类型不能表示源类型的所有值,存在溢出的风险; int可能会或可能不会保持价值9223372036854775807.在这种情况下,结果是实现定义的.最可能的行为是丢弃高阶位; 例如,转换9223372036854775807为int可能会产生2147483647.(这在十六进制中更清楚;值分别为0x7fffffffffffffff和0x7fffffff.)
如果需要显式转换,可以使用强制转换.C样式转换使用括号中的类型名称:
(long long)x
Run Code Online (Sandbox Code Playgroud)
或者你可以使用C++风格static_cast:
static_cast<long long>(x)
Run Code Online (Sandbox Code Playgroud)
这比C风格的演员表更安全一些,因为它限制了它可以操作的类型.
Dav*_*vid 13
long long类型通常为64位.
类型int可能是32位,但不是在所有机器上.
如果你将一个int转换为long long,你可以这样做
my_long_long = (long long) my_int
Run Code Online (Sandbox Code Playgroud)
它会没事的.如果你走另一个方向,就像
my_int = (int) my_long_long
Run Code Online (Sandbox Code Playgroud)
并且int小于64位,它将无法保存所有信息,因此结果可能不正确.
| 归档时间: |
|
| 查看次数: |
72495 次 |
| 最近记录: |