【C】【C++】 %運算子使用
阿新 • • 發佈:2018-11-22
如下C程式所示:
#include <stdio.h>
int main(void)
{
int a = 10, b = 4;
printf("%d\n", a % b);
printf("%d\n", a % -b);
printf("%d\n", -a % b);
printf("%d\n", -a % -b);
return 0;
}
輸出結果為:
2
2
-2
-2
再將這段程式碼轉換成C++程式,如下圖所示:
#include <cstdio> using namespace std; int main() { int a = 10, b = 4; printf("%d\n", a % b); printf("%d\n", a % -b); printf("%d\n", -a % b); printf("%d\n", -a % -b); return 0; }
輸出結果依然相同。
那麼可以得知:在C和C++中,%運算結果的符號為%運算子左邊的數,與其右邊的數無關。
想要在C和C++中讓負數模其他數為非負數,那麼只需要攜程下面這樣就行了
a = (a % b + b) % b; // %運算子右邊的數為正數時
a = (a % b - b) % b; // %運算子右邊的數為負數時