【问题标题】:Why is the result of -8%-5 equal to -3 [duplicate]为什么-8%-5的结果等于-3 [重复]
【发布时间】:2017-07-15 12:12:15
【问题描述】:

我有以下代码

#include <stdio.h>

int main(void)
{

    printf("%d\n", -8%5);


    printf("%d\n", 8%-5);

    printf("%d\n", -8%-5);


    return 0;
}

我得到的输出是

-3
3
-3

-8%5 和 8%-5 的符号怎么不同,尤其是 -8/5 和 8/-5 的结果输出相同的时候?

还有为什么 -8%-5 给出 -3 作为输出,而 -8/-5 给出它的输出为 1 ?

【问题讨论】:

    标签: c


    【解决方案1】:

    如果两个操作数都是非负数,则余数是非负数;如果不是,则余数的符号是​​实现定义的。

    【讨论】:

    • "如果不是,余数的符号是​​实现定义的。" --> 它从 C99 开始定义的。 C11 §6.5.5 5 & 6
    猜你喜欢
    • 2019-10-25
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2021-02-14
    • 2015-07-26
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多