关于C语言的数据类型的相关问题

img


上面的结果为什么不是浮点型啊?0E+0.0结果不是0.0?求详细解答

首先 A 和 C 肯定是对的
B 后面的小数部分 E0 是科学计数法,相当于 0 * 10 ^ 0 = 0,也就是 0.0
那剩下的 D就是错误的了,科学计数法的使用非法, 0E+0 这样才是合法的

E表示 10 的多少次方 次方必须为整数

不是的,
0E+0.0是表示浮点数0的一种科学计数法的写法。
它等同于0.0,也就是浮点数类型的0。
0E+0.0可以看作是指数为0,尾数为0的科学计数法,指的是0的10进制表示。在浮点数类型中,指数部分用于表示数字的大小范围,而尾数部分用于表示数字的精度。0E+0.0的指数部分为0,尾数部分也为0,因此结果为浮点数0.0。

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/1064143
  • 除此之外, 这篇博客: 两个正数相加可能会变负?0.1+0.2不等于0.3??中的 2、C语言中有符号整数如何转换成无符号整数? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 如果将一个有符号的整数强制类型转换成一个无符号的整数时,结果保持每个位的值不变,但改变解释这些位的方式。有符号整数是用补码方式来解释,而无符号整数则是最高位跟其他位作相同的运算。

    比如,一个整数 -12345,用补码表示为 1100111111000111,而强制转换为无符号整数后,其表示依然为 1100111111000111,但解释方式变了,最后得到的结果是 53191