1. 程式人生 > >【C】【C++】 %運算子使用

【C】【C++】 %運算子使用

 如下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; // %運算子右邊的數為負數時