c语言中,关于数据类型转换的两道题 1、int a; float f; double i; 那

c语言中,关于数据类型转换的两道题
1、int a; float f; double i; 那么表达式10+'a'+i*f的数据类型转换过程是怎样的?
2、char w; int x; float y; double z; 那么表达式 w*x+z-y 的数据类型转换过程是怎样的?
求详细解答,辛苦了,谢谢!!!!

先说下数据类型的优先级:double>float>int>char,也就是遇到比自己优先级大的,就往优先级大的转化。
第一个10+'a'+i*f,里面有double,所以10+'a'还是int型的,i*f是double型的,然后两个相加,都变成double型。
w*x是int型的,char型的是字符,进行计算的时候,会用sacll码转化为int型进行计算,所以还是int型的。然后进行加减后,都变成double型。
有什么不懂的,还可以问我,希望能采纳,谢谢。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-10
'a'是对应asc码为a的字符,字符和整形数据都通用的,
10+'a'
也就是10+a
+i*f
float*double=double(表达式取表达范围广精度高的)
所以1式最后为double型

w取其对应的asc码值,
w*x也就是int*int
+z-y
同理2式最后为double型
第2个回答  2015-12-10
不同标准转换有细微差别,unsigned 与int之间的转换,C99与C11不同。
10 + 'a' + i*f;
1、10被识别为int类型,'a'识别为char类型,因为有+号,所以char 类型隐式转换为int类型,i*f中i为double类型,f为float类型,double*float,float类型转换为double类型,结果为double类型。之后结果为int + double;
于是将int转换为double,再相加。具体过程如下:
int + char + double*float;
int + int + double*double;
int + double;
double + double;
double;
2、
char * int + double - float;
int * int + double - float;
int + double - float;
double + double - float;
double - float;
double - double;
double;
第3个回答  2015-12-10
1.表达式10+'a'+i*f,因为*运算符的优先级高于+运算符,所以先计算i*f,但i为double f为float,所以最后的运算结果为double,不必在意他是怎么转换的,如果你希望的得到的结果为指定类型的话可以显示的强制转化,整个表达式的值的类型取决于你将表达式赋给什么类型的值,编译器会自动转换,但最好不要将double的值赋给float,精度会差些,编译器在运算过程中应该是先将float转换为double,还有一点是'a'是字符类型,对应ASCII码97,我也是刚学c,知道的也不是很专业,但是这些都是纯手打,如果说错了请见谅

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网