ddgw.net
当前位置:首页 >> 有一道C语言的题目:已知:ChAr A; int B; FloAt C; DouBlE D;则计算表... >>

有一道C语言的题目:已知:ChAr A; int B; FloAt C; DouBlE D;则计算表...

该题选择D答案:1、a定义的是char型,实际上他也可以看做是int型,你试过没有将一个char型的变量用%d的格式输出后,为一个整数,该整数是该字符的ASCII码,是十进制而已.所以a*c之后的类型为float型2、a*c+c自然也就是float型了..那么最后就变为float减去一个double型,因为double型表示的数值精度比较高,那么自然结果也就转换成了double型了,你要明白类型的转换实际上可以看做为数据在内存的对齐

你定义C为float,最后c就是float 虽然b+d-c的结果是double型,但最后赋值给c时都要强制转为float型 毕竟c(float)只占4个字节的空间,你怎么把8个字节的内容(double)直接放进去呢?

D d*b是double型,a/d*b是double 所以最后的结果是double型

只要算式中出现了double型的,结果就是double型的.因为默认是从低到高,从整型到浮点型转换,double是最高的浮点型了.

因为在C语言中类型长度 char < int < float < double ,当这些类型同时相互运算时编译器会对各种数据类型进行隐式转换,转换为长度最长的类型进行计算,如果没有进行转换的话,不同类型之间的数据是不能进行相互运算的,所以结果为double类型.

在C语言中,char是ASCII码表示的,也可以转换成数字 其它类型会强制转换成占用字节多的类型 所以,a+b+c+d的类型应该是double 但赋值到c的时候,又被强制转换成float 所以,应该是float

double值类型按照操作数里面范围大的来取

a,b, c, d 都没有取值. 所以不能保证 2+a+9*b*5*c-5*d 结果是多少呀.最多能判断结果的类型是double.

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.ddgw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com