发布于 2021-01-25 11:09:54
long long_num1,long_num2;int int_num;// int_num晋升为在赋值之前输入long。long_num1 = int_num;
这篇文章不正确。int_num没有被提升,因为它已经是一个int,所以这里不适用。
在分配上,https://en.cppreference.com/w/cpp/language/implicit_conversion#Integral_conversions会发生--从源类型到目标类型。因为long可以表示int的所有值,所以该值不会更改,并且int_num值将转换为具有相同值的long。
发布于 2021-01-25 10:24:18
据我所知,没有数据丢失,因为int和long都有相同的4字节大小。您可以通过运行以下代码来检查编译器是否同意这一点:
std::cout << sizeof(int) << ' ' << sizeof(long);输出应该是"4 4“。这意味着他们俩是一样的。
编辑:对不起,谢谢你纠正我。大小可能不同,每当引用它们时都要使用sizeof。
https://stackoverflow.com/questions/65882667
复制相似问题