首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解晋升(类型转换)

了解晋升(类型转换)
EN

Stack Overflow用户
提问于 2020-02-04 10:16:39
回答 2查看 85关注 0票数 1

除了从int升级到一线双倍之外,还有其他促销吗?

代码语言:javascript
复制
double d=-1./0;   
unsigned int *pd = (unsigned int *)&d; 
printf("1:%08x\n",*++pd);   
printf("2:%08x",*--pd); 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-04 15:16:00

除了从int升级到第一行双倍之外,还有其他促销吗?

不是的。

  • 1.1.0double类型的常数。double.
  • The
  • Unary -不更改操作数的类型,因为它不是一个小整数类型,但是

0int类型,并作为/有类型double的算术结果的一部分提升到double。这是与变量d相同的类型,因此不发生lvalue转换。

详细信息:Implicit type promotion rules

与您的问题无关,将double d作为整数类型取消引用会调用未定义的行为错误:这违反了严格的混叠规则。在指向类型结束后执行指针算法也是未定义的行为。

票数 0
EN

Stack Overflow用户

发布于 2020-02-04 10:26:43

..除了0从整数提升到双倍..。

标准上没有用“晋升”这个词。该标准使用了“通常的算术转换”一词。

标准中的“促进”一词与“整数提升”相关,并说明在应用所使用的运算符之前,如何将不同的整数类型转换为通用的整数类型。

顺便说一句:让一个unsigned int指针指向一个double对象并取消它的引用,这违反了严格的混叠规则。

基于Ian:评论的编辑

术语“升级”也用于“默认参数提升”,这包括对函数的变量参数或没有原型的函数的参数进行双倍提升。

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

https://stackoverflow.com/questions/60055168

复制
相关文章

相似问题

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