首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++从int转换为long是升职吗?

C++从int转换为long是升职吗?
EN

Stack Overflow用户
提问于 2021-01-25 10:10:28
回答 2查看 348关注 0票数 3

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

如果在微软网站这里上发现以下代码:

代码语言:javascript
复制
long  long_num1, long_num2;
int   int_num;

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

然而,它没有在website网站上显示。

我知道晋升是一种价值保持(在转换时不会改变价值)的转换。

有人能帮我弄清楚吗?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 2
EN

Stack Overflow用户

发布于 2021-01-25 10:24:18

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

代码语言:javascript
复制
std::cout << sizeof(int) << ' ' << sizeof(long);

输出应该是"4 4“。这意味着他们俩是一样的。

编辑:对不起,谢谢你纠正我。大小可能不同,每当引用它们时都要使用sizeof

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65882667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档