c语言long long(int64)和int(int32)之间如何安全的互相转换?

2025-04-16 12:43:52
推荐回答(1个)
回答1:

int aa = (Int32)((((long)4294917296) << 32)>>32);

int32赋值给int64,因为int64的表示范围更大,此时直接赋值,一定安全;

int64赋值给int32,如果int64中的数据值不超过int32的表示范围,没问题,如果超出范围就会溢出,不能安全转换。

就是int乘以int默认使用int做的,有可能不够长,所以强制转换。当然这种解释只能是一种常见说法,还需要结合平台,与编译器。这种东西,没有定论的。只有实践才能看到结果。如果实际产品中,显然需要杜绝默认类型转换的发生。

扩展资料:

Int64 为比较此类型的实例、将实例的值转换为它的字符串表示形式以及将数字的字符串表示形式转换为此类型的实例提供了相应的方法。警告在32位Intel 计算机上分配 64 位值不是原子操作;即该操作不是线程安全的。这意味着,如果两个人同时将一个值分配给一个静态 Int64 字段,则该字段的最终值是无法预测的。

参考资料来源:百度百科-int64