练习4.34
if (fval)
//如果fval是0,则条件为假,否则为真。
//float to bool
dval = fval + ival;
//double = float + int;
//int转换为float
//float转换为double
dval + ival * cval;
//cval转化为int
//int转化为double
练习4.35
cval = 'a' + 3;
// ‘a'是char型的字符常量,'a'对应的数字值为97
// char类型的值提升为int类型,97(int)+3=100(int)
// 100(int)再转换成char类型,对应的是char类型的'd'
fval = ui - ival*1.0;
//float = unsigned int - int*1.0
//int转换为double类型
//乘法的结果为double
//ui转换为double类型
//相减的结果double结果转换为float,分配给fval
通过sizeof函数验证变量类型:
int main() {
float fval = 2.1;
double dval = 1.2;
int ival = 94;
unsigned int ui = 5;
fval = ui - ival * 1.0;
cout << sizeof(ival) << endl; //int类型,4个字节
cout << sizeof(ival*1.0) << endl; //double类型,8个字节
cout << sizeof(ui - ival * 1.0) << endl; //double类型,4个字节
cout << sizeof(fval) << endl; //float类型,4个字节
}
dval = ui * fval;
//double = unsigned int * float
//unsigned int 转换为float,结果为float
//float转换为double,可能数据丢失
验证:
int main() {
float fval = -2.1;
unsigned int ui = 5;
unsigned int a = ui * fval;
float b = ui * fval;
auto c = ui * fval;
cout << a << endl;
cout << b << endl;
cout << c << endl;
//b和c的结果一致,说明相乘的结果是float,也就说unsigned int 转化为了float
}
cval = ival + fval + dval;
//char = int + float + double
//int 转换为 float
//float转换为double
//double转换为char,数据有丢失