程序问题,看下面的题目.
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 04:23:45
程序问题,看下面的题目.
题目:给定下列定义:
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 * 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类型进行运算得出结果?
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.
表达式中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.