练习4.34、4.35

4.34:根据本节给出的变量定义,说明在下面的表达式中将发生什么样的类型转换:

a) if  (fval)  b)dval =fval + ival;  c) dval + ival * cval;

需要注意每种运算符遵循的是左结合律还是右结合律。

Ans:a) float类型会转换成bool类型;

    b)首先ival会转换成float类型,然后再转换成double类型。

    c)cval会转换成int类型,然后int类型会转换成double类型。

4.35:假设有如下的定义,

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;

Ans:a) 发生了隐式转换,赋值运算符的右侧,' a '转换成int类型,然后根据左值的类型,int类型转换成char类型。

     b)发生了隐式转换,赋值运算符的右侧,ival转换成了double类型,然后ui会转换成double类型,再根据左值的类型,double类型转换成float类型。

     c)发生了隐式转换,赋值运算符的右侧,ui转换成float类型,然后根据左值的类型,float类型转换成double类型。

     d)发生了隐式转换,赋值运算符的右侧,首先ival转换成float类型,然后float类型再转换成double类型,根据左值的类型,double类型转换成char类型。

原文地址:https://www.cnblogs.com/Dark-King/p/9450785.html