吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 965|回复: 6
收起左侧

[已解决] C语言算术运算符的问题

[复制链接]
坑比 发表于 2020-3-14 18:18
本帖最后由 坑比 于 2020-4-2 20:59 编辑

今天开始学习C语言,在做课后题出现了问题
C语言的算术规则是怎么算的,为什么加括号和不加结果差这么多

11.png 22.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

boy7928 发表于 2020-3-14 18:30
涉及到运算符优先级的问题 你可以查查C语言运算符的优先级 百度有写
神之名 发表于 2020-3-14 18:35
运算符优先级,有兴趣去百度看看,没有就用括号来让你的算式先后按你要求的
hoy0a1d 发表于 2020-3-14 18:45
本帖最后由 hoy0a1d 于 2020-3-14 18:46 编辑

这压根不是运算优先级的问题,这是整数除法运算取整问题,将你两个代码每一步做了注释,你看一下

1、代码一
[C++] 纯文本查看 复制代码
        int $ = 93;
        printf("%d", $ / 20);                // 93 / 20 = 4
        $ -= 20 * $ / 20;                // $ = 93 - 20 * 93 / 20 = 0
        printf("%d", $ / 10);                // 0 / 10 = 0
        $ -= 10 * $ / 10;                // $ = 0 - 10 * 0 / 10 = 0
        printf("%d", $ / 5);                // 0 / 5 = 0
        $ -= 5 * $ / 5;                        // $ = 0 - 5 * 0 / 5 = 0
        printf("%d", $ / 1);                // 0 / 1 = 0


2、代码二
[C++] 纯文本查看 复制代码
        int money = 93;
        printf("%d", money / 20);                // 93 / 20 = 4
        money -= 20 * (money / 20);                // money = 93 - 20 * (93 / 20) = 93 - 20 * 4 = 13
        printf("%d", money / 10);                // 13 / 10 = 1
        money -= 10 * money / 10;                // money = 13 - 10 * (13 / 10) = 13 - 10 * 1 = 3
        printf("%d", money / 5);                // 3 / 5 = 0
        money -= 5 * money / 5;                        // money = 3 - 5 * (3 / 5) = 3 - 5 * 0 = 3
        printf("%d", money / 1);                // 3 / 1 = 3

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
坑比 + 2 + 1 感谢大佬,我懂了

查看全部评分

0Ling0 发表于 2020-3-14 20:33
/和%一个是除数,一个是求余
luanshils 发表于 2020-3-15 14:08
这个肯定有优先级,还有分左结合与右结合呢,总之括号就是最高级
widsnoy 发表于 2020-3-17 17:44
c语言整数除法会自动向下取整,虽然和运算顺序有关系,但不能算是优先级的问题。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 18:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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