程序问题,看下面的题目.题目:给定下列定义:char cval; int ival; unsigned int ui;float fval; double dval;指出可能发生的(如果有的话)隐式类型转换:(a) cval = 'a' + 3; (b) fval = ui – ival * 1.0;(c) dval = ui *
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/23 12:37:39
![程序问题,看下面的题目.题目:给定下列定义:char cval; int ival; unsigned int ui;float fval; double dval;指出可能发生的(如果有的话)隐式类型转换:(a) cval = 'a' + 3; (b) fval = ui – ival * 1.0;(c) dval = ui *](/uploads/image/z/4326803-35-3.jpg?t=%E7%A8%8B%E5%BA%8F%E9%97%AE%E9%A2%98%2C%E7%9C%8B%E4%B8%8B%E9%9D%A2%E7%9A%84%E9%A2%98%E7%9B%AE.%E9%A2%98%E7%9B%AE%EF%BC%9A%E7%BB%99%E5%AE%9A%E4%B8%8B%E5%88%97%E5%AE%9A%E4%B9%89%EF%BC%9Achar+cval%3B+int+ival%3B+unsigned+int+ui%3Bfloat+fval%3B+double+dval%3B%E6%8C%87%E5%87%BA%E5%8F%AF%E8%83%BD%E5%8F%91%E7%94%9F%E7%9A%84%EF%BC%88%E5%A6%82%E6%9E%9C%E6%9C%89%E7%9A%84%E8%AF%9D%EF%BC%89%E9%9A%90%E5%BC%8F%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2%EF%BC%9A%28a%29+cval+%3D+%27a%27+%2B+3%3B+%28b%29+fval+%3D+ui+%E2%80%93+ival+%2A+1.0%3B%28c%29+dval+%3D+ui+%2A)
程序问题,看下面的题目.题目:给定下列定义:char cval; int ival; unsigned int ui;float fval; double dval;指出可能发生的(如果有的话)隐式类型转换:(a) cval = 'a' + 3; (b) fval = ui – ival * 1.0;(c) dval = ui *
程序问题,看下面的题目.
题目:给定下列定义:
char cval;
int ival;
unsigned int ui;
float fval;
double dval;
指出可能发生的(如果有的话)隐式类型转换:
(a) cval = 'a' + 3;
(b) fval = ui – ival * 1.0;
(c) dval = ui * fval;
(d) cval = ival + fval + dval;
【解答】
(a) 'a'首先提升为int 类型,再将'a' + 3 的结果值转换为char 型,赋给cval.//a为什么不直接
(b) ival 转换为double 型与1.0 相乘,ui 转换为double 型再减去ival * 1.0
的结果值,减操作的结果转换为float 型,赋给fval.//ival,ui一开始为什么不直接转换为float类型呢?而是经过相乘和相减之后再转换为float进行运算?
(c) ui 转换为float 型与fval 相乘,结果转换为double 型,赋给dval.//ui为什么不直接double类型
(d) ival 转换为float 型与fval 相加,结果转换为double 型,再与dval 相加,
结果转换为char 型,赋给cval.//ival,fval为什么不直接都转换为double类型进行运算得出结果?
程序问题,看下面的题目.题目:给定下列定义:char cval; int ival; unsigned int ui;float fval; double dval;指出可能发生的(如果有的话)隐式类型转换:(a) cval = 'a' + 3; (b) fval = ui – ival * 1.0;(c) dval = ui *
c,d解答是不正确的.
表达式中float类型一律直接转为double,char和short一律直接转为int 类型.
a.char类型+int型,char先转为int型再参与计算,结果为int型,赋给char型变量,将int型再转为char型赋值.
b.实型常量,一律存储为double类型.先做后面的乘法,int*double,int转换为doublue计算,然后做unsinged int+doublue,unsinged int转换为doublue,然后将double转为float赋值.
c.int型与float或double 型计算时,把int 型和float型转为doublue再计算.所以double*double的值赋值给double.(你给出的解答是错的)
d.道理同c,先做int+float,float直接转为double,所以变为int+double,int转为double,相加后为double,double+double结果为double,再转换为char赋值.(你给出的解答是错的)
d.