C语言一道简单的题目

来源:百度知道 编辑:UC知道 时间:2024/05/24 18:25:31
设有定义语句:int i=3; float f=456.789; 则表达式1.2+i+'A'+f值的数据类型是 最后的答案是 525 吗?

A的ascii的值为65
所以
1.2+i+'A'+f=1.2+3+65+456.789=525.989
表达式最后的数据类型是double。最后的结果是525.989。
在计算机中作混合类型的数据运算时,有规定
字符数据必定先转换位整数,例如:A 转换为65
float型数据为了提高运算精度,一律先转换为double型。
由数据类型隐式转换规则int->unsigned->long->double 得到这个表达式的数据
类型为double. 结果525.989

浮点数计算怎么会得出525的值呢?
1.2+3+67+456.789=527.789
如果你最后赋值对象是整型,那么也是527

如果没有类型转换的话结果是525.989.如果是整型就是525.
#include<iostream.h>
void main()
{int i=3;double f=456.789;
cout<<1.2+i+'A'+f;
}