C++ C++;从int到long的转换是一种提升吗?
在网上做了大量的研究之后,我不知道从int到long的转换是否被认为是一种提升 如果在Microsoft网站上找到以下代码: 然而,它没有显示在屏幕上 我理解提升是一种保持价值的转换(转换时不会改变价值) 有人能帮我弄清楚吗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
具有相同的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;