加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中的数据类型提升或降级

发布时间:2020-12-16 03:29:36 所属栏目:百科 来源:网络整理
导读:以下哪项是数据类型升级和降级: char ch = 'C';int i = 65;float fl = 2.2;ch = ch + 1;i = fl + 2 * ch;fl = 2.0 * ch + i;ch = 5212205.17; 如果我说的话我是否正确 促销: i = fl + 2 * ch; fl = 2 * ch + i; 降级: ch = 5211205.17; 不知道 ch = ch +
以下哪项是数据类型升级和降级:
char ch = 'C';
int i = 65;
float fl = 2.2;

ch = ch + 1;
i = fl + 2 * ch;
fl = 2.0 * ch + i;
ch = 5212205.17;

如果我说的话我是否正确

促销:

  • i = fl + 2 * ch;

  • fl = 2 * ch + i;

降级:

ch = 5211205.17;

不知道

ch = ch + 1;

也降级..请帮忙:)

解决方法

char ch = 'C';

文字“C”的类型为int,降级为char类型(在赋值期间转换为左侧运算符).

float fl = 2.2;

文字2.2是double类型,降级为float类型(在赋值期间转换为左操作符).

ch = ch + 1;

变量ch的类型为char,并提升为int类型(整数提升).

加法ch 1的结果是int类型并降级为char类型(在赋值期间转换为左运算符).

i = fl + 2 * ch;

变量ch的类型为char,并提升为int类型(整数提升).

2 * ch的结果是int类型,并提升为float(balance)类型.

fl 2 * ch的结果是float类型.浮点数降级为int(在赋值期间转换为左运算符).这是一个危险的转换,因为精度损失,良好的编译器应该发出警告,试图在没有显式转换的情况下将浮点数存储在int中.

fl = 2.0 * ch + i;

变量ch的类型为char,首先提升为int类型(整数提升),然后提升为double类型(balance).

2.0 * ch的结果是double类型.

2.0 * ch i的结果是double类型并降级为float类型(在赋值期间转换为左运算符).

ch = 5212205.17;

文字5212205.17是double类型并降级为char类型(在赋值期间转换为左操作符).这是一个危险的转换,也可能是未定义的行为,因为char的签名是实现定义的,并且数字也不适合char.

尝试将带符号的浮点数存储在无法表示它的类型(例如unsigned int)中是未定义的行为,即严重的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读