鱼C论坛

 找回密码
 立即注册
查看: 881|回复: 7

[已解决]来看看c语言这个大宝贝吧

[复制链接]
发表于 2020-3-19 21:03:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么输出是2.500000而不是0.250000
我的过程是:2.5+a=5.5   
                   5.5%3=1   
                       1*int(x+y)=7  
                   7%2=1  
                   1/4=0.25
最佳答案
2020-3-19 21:17:36
本帖最后由 Given2001 于 2020-3-19 21:19 编辑

我大概明白你错在哪了,+ 的优先级是小于 % 的,所以先计算 %
根据代码的意思,我帮你加了个括号,便于你理解:
m = x + (a % 3 * (int)(x+y) % 2 / 4);
如果要按照你的过程来,这句应该这样改:
m = (x + a) % 3 * (int)(x+y) % 2 / 4;
批注 2020-03-19 204652.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-19 21:12:12 | 显示全部楼层

回帖奖励 +4 鱼币

没看代码,不过你的过程中5.5%3=1如果%是取余的话,我要提醒一下%的两个操作数必须是整数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 21:12:55 | 显示全部楼层
a%3=0,m=2.5,输出2.500000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 21:13:20 | 显示全部楼层
%两边只能是整型数哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 21:15:33 | 显示全部楼层
你没有弄清楚运算符的优先级,%大于+,怎么会先执行2.5+a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 21:15:35 | 显示全部楼层
还有一件事,c语言加减乘除也是先乘除再加减的。。。。这部分基础知识你先去网上了解一下吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 21:17:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Given2001 于 2020-3-19 21:19 编辑

我大概明白你错在哪了,+ 的优先级是小于 % 的,所以先计算 %
根据代码的意思,我帮你加了个括号,便于你理解:
m = x + (a % 3 * (int)(x+y) % 2 / 4);
如果要按照你的过程来,这句应该这样改:
m = (x + a) % 3 * (int)(x+y) % 2 / 4;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 22:04:38 | 显示全部楼层
运算的优先级问题
如果你确定要按照你的步骤来,你不确定自己清楚优先级的情况下,请自行加上括号来区分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 20:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表