c语言里面的c等于多少,2 / (-2) 的值在C语言中到底是多少?

2023-05-16

原标题:2 / (-2) 的值在C语言中到底是多少?

大家好,看到这个题目大家是不是有些奇怪?这不是很简单的一道小学除法题目吗?别急,今天我想跟大家聊的是C语言中类似这种运算的相关问题。我们先看看下面这些规则。

假定我们让a除以b,商为q,余数为r:

q = a / b ;

r = a % b ;

这里不妨先假定b>0。

我们希望a、b、q、r之间维持什么样的关系呢?

1. 最重要的一点,我们希望q*b+r=a,因为这是定义余数的关系。

2. 如果我们改变a的正负号,希望q的符号也随之改变,但q的绝对值不会变。

3. 当b>0时,我们希望保证r>=0且r

以上这3条性质是我们认为整数除法和余数操作所应该具备的。但是实际上它们不可能同时成立。

先考虑一个简单的例子:3/2,商为1,余数也为1。此时,第1条性质得到了满足。那把例子稍微改写一下,(-3)/2的值应该是多少呢?如果要满足第2条性质,答案应该是-1。但如果是这样,余数就必定是-1,这样第3条性质就无法测足了。如果我们首先满足第3条性质,即余数是1,这种情况下根据第1条性质,商应该为-2,那么第2条性质又无法满足了。

上面的矛盾似乎无法解决。因此,C语言或者其他语言在实现整数除法截断运算时,必须放弃上述3条性质中的至少1条,而大多数编程语言选择了放弃第3条,而改为要求余数与被除数的正负号相同,这样性质1和性质2就可以得到满足,大多数C语言编译器也都是如此。

但是,C语言的定义只保证了性质1:当a>=0且b>0时,保证| r |=0 。后面部分的保证与性质2或性质3比较起来,限制性要弱得多。

各位,通过上面的解释,你明白了吗?返回搜狐,查看更多

责任编辑:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言里面的c等于多少,2 / (-2) 的值在C语言中到底是多少? 的相关文章

随机推荐