算术操作符是最容易理解的符号了,因这它与平时做的数学是完全相同的规则。就连小学的知识“先乘除后加减”都完全适用。
不过,就像因为与生活的逻辑完全一样导致易于理解一般,与生活逻辑不一致的问题就比较难以理解了。比如“有9个苹果,3个小朋友分,平均每个小朋友可以分到几个苹果?”,现实中既不可能是-9个苹果,也不可能给-3个小朋友分。而是C/C++中的除法和求余却不得不面对这种情况。它们非但难于理解,而且还有不确定因素。
引用:如果两个操作数都为正,除法和求模操作的结果也是正数(或零);如果两个操作数都是负数,除法操作的结果为正数(或零),而求模操作的结果则为负数(或零);如果只有一个操作数是负数,这两种操作的结果取决于机器;求模结果的符号也取决于机器,而除法操作的值则是负数(或零)。
笔记:以上这一大堆似乎有些费口舌。这么说吧,如果两个数同号,则一切都那么简单。即使是两个负数相除,只要把它们当成两个正数就可以了——商肯定是正的,余数只要对应调整一下符号即可;如果是一正一负两个数相除,那么商肯定是负的,但是究竟是负多少可不一定,余数就更难说了,连是正是负都不能确定。
21 % 6 = 3;
21 % 7 = 0;
-21 % -8 = -5;
21 % -5 = ?;//与机器相关,可能是1可能是-4
21 / 6 = 3;
21 / 3 = 3;
-21 / -28 = 2;
21 / -5 = ?;//与机器相关,可能是-4或-5
引用:当只有一个操作数为负数时,求模操作结果值的符号可依据分子(被除数)或分母(除数)的符号而定。如果求模的结果随分子的符号,则除出来的值向零一侧取整;如果求模与分母的符号匹配,则除出来的值向负无穷一侧取整。
10个苹果分给-3个朋友,平均每个小朋友可以分到几个?还剩下几个?
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
