2015-12-16 70 views
0

當我試圖在C中執行-13%-10語句時,我得到-3作爲輸出,我很想知道爲什麼輸出不是3.當我們使用負值操作時,%操作符如何工作?

+0

嗯,我找到了答案,在這裏它, 其實我想它會得到解決的-13%-10 = -13/-10 = 13/10 = 10 * 1 + 3 但實際上它將被解決爲 –

+0

最後我找到了答案,在這裏,它是, 其實我認爲它將被解決爲-13%-10通過消除負號,然後計算餘數爲13 - 10 * 1 = 3 但實際上它將被解決爲 -13%-10 = -13 - (-10 * 1)= -13 +10 = -3 –

回答

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」)將始終具有相同的符號。