C++ 从 int 到 long 的转换是一种提升吗?

C++ Is conversion from int to long a promotion?

在网上查了很多资料后,我无法弄清楚从 int 到 long 的转换是否被认为是一种提升。

如果在微软网站上找到如下代码here :

long  long_num1, long_num2;
int   int_num;

// int_num promoted to type long prior to assignment.
long_num1 = int_num;

但是 cppreference website 上没有显示。

我理解促销是一种保持价值的转化(转化时不会改变价值)。

谁能帮我解决这个问题?

提前致谢

据我所知,没有数据丢失,因为 intlong 都具有相同的 4 字节大小。您可以通过运行以下代码检查您的编译器是否同意这一点:

std::cout << sizeof(int) << ' ' << sizeof(long);

输出应该是“4 4”。那将意味着它们是相同的。

编辑:抱歉;谢谢你纠正我。大小可能会有所不同,请在引用它们时使用 sizeof

long  long_num1, long_num2;
int   int_num;

// int_num promoted to type long prior to assignment.
long_num1 = int_num;

文本不正确。 int_num 没有 提升,因为它已经是 int,所以这里没有意义。

assignment, a implicit conversion 发生 - 从源类型到目标类型。因为 long 可以表示 int 的所有值,所以不会更改值,并且 int_num 值将转换为具有相同值的 long