当我们使用负值进行操作时%运算符如何工作?

时间:2015-12-16 14:23:38

标签: operators

当我试图在c中执行-13%-10语句时,我得到-3作为输出,我很想知道为什么输出不是3。

1 个答案:

答案 0 :(得分:0)

我也不知道你问题的答案。所以我扩展了你原来的等式并将它们插入一个简短的Netbeans / GCC C程序中:

/*
 * File:   main.c
 * Author: Colleen
 *
 * Created on December 16, 2015, 9:43 AM
 * Testing modulus operations with negative numbers.
 */

#include <windef.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>

/*
 *
 */
int main(int argc, char** argv) {

    INT16 A = -13;
    INT16 B = -10;

    printf ("1. %3d %% %3d = %3d\n",  A,  B,   A %  B);
    printf ("2. %3d %% %3d = %3d\n", -A,  B, (-A)%  B);
    printf ("3. %3d %% %3d = %3d\n",  A, -B,   A%(-B));
    printf ("4. %3d %% %3d = %3d\n", -A, -B, (-A)%(-B));

    return (EXIT_SUCCESS);
}

以下是我的结果:

1. -13 % -10 =  -3
2.  13 % -10 =   3
3. -13 %  10 =  -3
4.  13 %  10 =   3

RUN SUCCESSFUL (total time: 35ms)

所以它看起来就像红利(你要分红的数字,或上面的“A”)和商(上面的答案或“C”)总是有相同的符号。