1. 程式人生 > >C語言中的取模(%)運算

C語言中的取模(%)運算

C語言中規定,%運算子的兩個運算元必須同為整數型別,這個很好理解,平時用%也是這麼運算的,問題是如果這兩個運算元異號,那麼最後的計算結果該以哪個運算元的符號為準呢?C99標準中規定,若有a,b兩個整型資料作取模運算,則它們必須滿足以下等式的成立:

(a / b) * b + a % b == a;

從這個等式可以看出,(a / b) * b運算結果的符號一定取決於a,而在C語言中又規定,兩個整數相除,如果不能整除,那麼結果的小數部分的處理應該向0靠近;綜合以上所有要求,如果兩個異號整數進行取模運算,那麼結果的符號應該與除數相同,而被除數b的符號對結果不產生影響。

另外,在C語言中整數型別不僅指int, char型別也是整數型別,下面的程式一樣可以進行%運算:

#include <stdio.h>

int main(void) {

    char a = 'a', b = 'b';

    printf("%d\n", a % b);

    return 0;

}
最後打印出的結果為97