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

Matt_p

其中哪些是数据类型提升和降级:

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类型(整数提升)。

相加的结果为intch + 1类型,降级char类型(赋值期间转换为左运算符)。

i = fl + 2 * ch;

变量ch是char类型的被提升为int类型(整数提升)。

的结果为int2 * ch类型,提升float(平衡)类型

的结果为floatfl + 2 * ch类型浮点数降级int(在赋值期间转换为左运算符)。由于精度下降,这是一种危险的转换,一个好的编译器应发出警告,试图在没有显式强制转换的情况下将浮点数存储在int内。

fl = 2.0 * ch + i;

变量ch是char类型的,首先被提升为int类型(整数提升),然后被提升为double类型(平衡)。

的结果为double2.0 * ch类型

的结果为double2.0 * ch + i类型降级float类型(赋值期间转换为左运算符)。

ch = 5212205.17;

文字5212205.17的类型为double,降级char类型(在分配过程中转换为左运算符)。这是一个危险的转换,并且可能也是未定义的行为,因为char的签名是实现定义的,而且数字不能容纳在char内。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

提升为数据类型(Haskell)

来自分类Dev

在C(GCC)中定义数据类型

来自分类Dev

C中参数的默认数据类型?

来自分类Dev

c中的unsigned int数据类型

来自分类Dev

C ++中的符号数据类型

来自分类Dev

如何检查C ++中的数据类型?

来自分类Dev

在C中扫描不同的数据类型

来自分类Dev

C中的数据类型混合

来自分类Dev

在C(GCC)中定义数据类型

来自分类Dev

C ++中的符号数据类型

来自分类Dev

Java中的C数据类型

来自分类Dev

如何将C#小数数据类型“降级”到任意数量的小数位数?

来自分类Dev

如何知道C中未知类型变量的数据类型?

来自分类Dev

如何确保数据类型与C ++中的数据类型一样大

来自分类Dev

一元+/-运算符如何可能导致“ -a”或“ + a”中的整数提升,而“ a”是算术数据类型的常量/变量?

来自分类Dev

在C ++中解析CSV文件中的不同数据类型?

来自分类Dev

在C ++中为C库强制转换数据类型

来自分类Dev

COBOL中的数据类型

来自分类Dev

OpenCV中的数据类型

来自分类Dev

C ++开启数据类型

来自分类Dev

C ++开启数据类型

来自分类Dev

C ++通用数据类型

来自分类Dev

C ++数据类型转换

来自分类Dev

C#中数据类型简短的转换错误

来自分类Dev

询问变量C ++中的数据类型是什么

来自分类Dev

如何在C中更改数据类型

来自分类Dev

C#中的数据类型,用于查找阶乘

来自分类Dev

如何在C#中返回不同的数据类型?