如何从long long转换为int,另一种转换回c ++? 还有长长的特性,特别是它的最大尺寸, 提前谢谢..
答案 0 :(得分:15)
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
对于缩小转换,目标类型不能代表源类型的所有值,存在溢出的风险; int
可能会或可能无法保留值9223372036854775807
。在这种情况下,结果是实现定义。最可能的行为是丢弃高阶位;例如,将9223372036854775807
转换为int
可能会产生2147483647
。 (这在十六进制中更清楚;值分别为0x7fffffffffffffff
和0x7fffffff
。)
如果您需要明确转换,可以使用强制转换。 C样式转换使用括号中的类型名称:
(long long)x
或者你可以使用C ++风格的static_cast
:
static_cast<long long>(x)
这比C风格的演员表更安全一些,因为它限制了它可以操作的类型。
答案 1 :(得分:12)
long long long通常是64位。
类型int可能是32位,但不是在所有机器上。
如果你把一个int转换为long long,你可以做
my_long_long = (long long) my_int
它会很好。如果你走另一个方向,比如
my_int = (int) my_long_long
并且int小于64位,它将无法保存所有信息,因此结果可能不正确。
答案 2 :(得分:3)
int的大小只有2个字节,而另一个通常大于int。因此,如果您希望将long转换为int,那么您最终会丢失信息。但另一种方式是可能的,而不会牺牲信息的正确性。
假设a
是长类型而b
是int类型。然后是int to long covertion:a=(long)b;
。换句话说:b=(int)a;
。