Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;从int到long的转换是一种提升吗?_C++_Type Conversion_Integer_Long Integer - Fatal编程技术网

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

C++ C++;从int到long的转换是一种提升吗?,c++,type-conversion,integer,long-integer,C++,Type Conversion,Integer,Long Integer,在网上做了大量的研究之后,我不知道从int到long的转换是否被认为是一种提升 如果在Microsoft网站上找到以下代码: 然而,它没有显示在屏幕上 我理解提升是一种保持价值的转换(转换时不会改变价值) 有人能帮我弄清楚吗 提前感谢据我所知,没有数据丢失,因为int和long具有相同的4字节大小。您可以通过运行以下代码来检查编译器是否同意这一点: std::cout << sizeof(int) << ' ' << sizeof(long); std::c

在网上做了大量的研究之后,我不知道从int到long的转换是否被认为是一种提升

如果在Microsoft网站上找到以下代码:

然而,它没有显示在屏幕上

我理解提升是一种保持价值的转换(转换时不会改变价值)

有人能帮我弄清楚吗


提前感谢

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

std::cout << sizeof(int) << ' ' << sizeof(long);
std::cout
文本不正确
int_num
不会被提升,因为它已经是一个
int
,所以这里没有适用的点


在上,将发生一个从源类型到目标类型的事件。由于
long
可以表示
int
的所有值,因此该值不会更改,
int\u num
值会转换为具有相同值的
long

最好将文本作为文本,而不是文本图像。这不是一种提升,[conv.prom](请参阅)中的任何一项都不适用。这是一种转换。
int和long都具有相同的4字节大小
请不要这样假设-这会导致新手程序员错误地假设数据类型的大小是固定的,并编写难以修复的不可移植代码
int
至少有16位,
long
至少有32位。看见请参阅,了解当今最常见的整数大小。这并不完全正确。您得到的唯一保证是
long
至少与
int
一样宽(并且
int
至少是16位,从C合并)。有些平台的
int
long
大小不同。@IInspectable——还要求
long
至少为32位。
std::cout << sizeof(int) << ' ' << sizeof(long);
long  long_num1, long_num2;
int   int_num;

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