c语言题目:若有下列定义:char a;int b;float c;double d;c*=b+d-c,则c的类型为?

 我来答
西瓜西施pp
2019-06-17 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:1159万
展开全部
你好!!!
char
a;int
b;float
c;double
d;
c*=b+d-c这个表达式中含有不同的数据类型,那么
编译器
就会自动把低级类型向高级
类型转换
(当然这个转换是自动转换的)即编译器会把char
,int,
float
转换成double的类型,
c*=b+d-c但是我们定义变量c是float类型的,那么这个计算结果就会
强制转换
成float,然后把转化后float类型的数据在赋值给变量c.
总结:在有不同类型的计算中,都会把低级运算想高级运算自动转化,要是表达式中都float,那么其他低于float类型的都会转化成float,要是有double也是如此。
但是注意一点:
编译器
在计算的时候是按等级最高的类型计算的,计算的只是表达式结果的类型,那要是把高级类型的几个赋值给低级类型,会发出自动转换。比如:
char
a;int
b;float
c;double
d;
表达式a+b+c+d,那么这个表达式中最高的类型就是double,那么表达结果的类型就是double,但是我们可把double类型赋值给int
类型:int
x=a+b+c+d,那么此时x的类型还是int
旅行走失的猫AA
2019-10-31 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:26%
帮助的人:1098万
展开全部
这个c的类型肯定是double的
这是数字类型转换的基本规则,有double参与运算,则结果肯定是double的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
亚浩电子说
2019-10-24 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:871万
展开全部
你定义C为float,最后c就是float
虽然b+d-c的结果是double型,
但最后赋值给c时都要强制转为float型
毕竟c(float)只占4个字节的空间,你怎么把8个字节的内容(double)直接放进去呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蛮吉学长GG
2020-02-29 · TA获得超过3.6万个赞
知道小有建树答主
回答量:1.2万
采纳率:33%
帮助的人:998万
展开全部

double
<--float
^
^
|
|
|
long
|
|
|
unsignd
|
|

int
<--
char,short
由低到高!注意这个不是一层一层的变的(int->unsigned->long->long)
int->long,int->double都是可行的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
进口可爱sun
2020-04-06 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:31%
帮助的人:848万
展开全部
这个是肯定要发生隐式转换的,你小类型和大类型做运算,就会发生这样的情况
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式