C语言算术运算符的问题
本帖最后由 坑比 于 2020-4-2 20:59 编辑今天开始学习C语言,在做课后题出现了问题
C语言的算术规则是怎么算的,为什么加括号和不加结果差这么多{:301_982:}
涉及到运算符优先级的问题 你可以查查C语言运算符的优先级 百度有写 运算符优先级,有兴趣去百度看看,没有就用括号来让你的算式先后按你要求的 本帖最后由 hoy0a1d 于 2020-3-14 18:46 编辑
这压根不是运算优先级的问题,这是整数除法运算取整问题,将你两个代码每一步做了注释,你看一下
1、代码一
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、代码二
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 /和%一个是除数,一个是求余 这个肯定有优先级,还有分左结合与右结合呢,总之括号就是最高级 c语言整数除法会自动向下取整,虽然和运算顺序有关系,但不能算是优先级的问题。
页:
[1]