永发信息网

为什么C语言中int i=3,j=5;float x=3.5;double y=5.0;表达式i-=j*=x+y答案是-39

答案:2  悬赏:40  手机版
解决时间 2021-01-01 15:15
为什么C语言中int i=3,j=5;float x=3.5;double y=5.0;表达式i-=j*=x+y答案是-39?是要先算x+y吗?为什么?
最佳答案
不是运算符取整,之所以取整的原因是,类型转换!

数据类型的转换一般分为隐含转换和强制转换两种;
隐含转换
算术运算符 关系运算符 逻辑运算符赋值运算符等二元运算符要求两个运算符的类型一致,算术运算 关系运算中参与运算的类型不一致时要进行隐含转换,原则是将低类型转化成高类型(类型越高数据精度越高,double>float>unsigned long>long >int>short>char>)这种转化是电脑自动完成,是安全的,数据精度没有损失;
强制转换
一般涉及到将高类型转化成低类型时使用,不安全,可能在精度的损失,有两种方法
1类型说明符(表达式)//c++强制转化符号
2(类型说明符)表达式 //c强制转化符号;
如 float z=7.56;
int a;
a=int(z);或a=(int)z;

i-=j*=x+y表达式分解如下:
double tmp1 = (double)x + y;
j = int( (double)j * tmp1 ); // j =int( 5.0 *7.5) =37
i-=j; // i = 3 - 37 = -34;
全部回答
我不会~~~但还是要微笑~~~:)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电脑经常死机黑屏
腾讯微博怎么取消认证
—Let’s have a party this Sunday.—. We’
二十三画的繁体字
南方航空深圳分公司地勤保障部员工在工作一定
the problem of land erosion getting more s
淘宝店铺优惠券和商品优惠券生成的链接不是淘
野炊是需要准备什么?
单选题Not only Lucy’s brothers&
豆瓣酱能生吃吗
安装windows7后,带的DX11,但是显卡不支持DX
听说毕节要升为地级市是不是真的?
六年级毕业语录,唯美清新一点
已知a是最小的正整数,b是a的相反数,c的绝对
嘉媚乐护肤品怎么样
推荐资讯
做梦梦见火是什么预兆?
春夜喜雨阅读答案
苹果手机的录音功能在哪呢
请问江诗丹顿表背面写着有70313 Swiss made11
小便黄,大便稀,爱放臭屁,手脚凉,爱出汗,
如果有一天是什么歌
母鸡汤会回奶吗
猕猴桃的核是什么形状
单选题把西方资产阶级思想同儒家思想结合起来
梦见数字是什么意思
云南旅游,谁有比较好的云南游路线,自由行,
斗破苍穹薰儿是斗帝吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?