来看看c语言这个大宝贝吧
为什么输出是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 没看代码,不过你的过程中5.5%3=1如果%是取余的话,我要提醒一下%的两个操作数必须是整数 a%3=0,m=2.5,输出2.500000 %两边只能是整型数哦{:10_245:} 你没有弄清楚运算符的优先级,%大于+,怎么会先执行2.5+a 还有一件事,c语言加减乘除也是先乘除再加减的。。。。这部分基础知识你先去网上了解一下吧 本帖最后由 Given2001 于 2020-3-19 21:19 编辑
我大概明白你错在哪了,+ 的优先级是小于 % 的,所以先计算 %
根据代码的意思,我帮你加了个括号,便于你理解:
m = x + (a % 3 * (int)(x+y) % 2 / 4);
如果要按照你的过程来,这句应该这样改:
m = (x + a) % 3 * (int)(x+y) % 2 / 4; 运算的优先级问题
如果你确定要按照你的步骤来,你不确定自己清楚优先级的情况下,请自行加上括号来区分
页:
[1]