从long long转换为int,另一种转换回c ++

时间:2012-08-20 01:19:17

标签: c++ casting int long-integer

如何从long long转换为int,另一种转换回c ++? 还有长长的特性,特别是它的最大尺寸, 提前谢谢..

3 个答案:

答案 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。 (这在十六进制中更清楚;值分别为0x7fffffffffffffff0x7fffffff。)

如果您需要明确转换,可以使用强制转换。 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;

相关问题