【发布时间】:2012-02-28 00:35:28
【问题描述】:
我有几行 C 代码测试模运算符,如下所示:
// line 1
printf("%d\n", 5 % (-3)); => output: 2
// line 2
printf("%d\n", -5 % 3); => output: -2
我知道模数的符号取决于分子的符号,但我很好奇为什么不这样呢?
【问题讨论】:
-
这不是一个可以投反对票的问题。这是一个模运算符如何工作的问题,是一个很好的问题。
-
我很确定
%和负数的几乎任何组合的结果都是实现定义的。 -
它是 C99 之前的实现定义 - 请参阅以前的副本