模运算%的结果符号

代码:

#include <stdio.h>
#include <stdlib.h>

void display(int, int);

int main(void) {

	// 模运算的结果取决于第一个操作数的符号
	// 如果第一个操作数是正数,得到的模也是正数
	// 如果第一个操作数是负数,得到的模也是负数

	// a % b = a - [a / b] * b
	// [x]表示对数x趋零取整
	// C99中,对整数除法规定趋零截尾

	int a, b;

	a = 9;
	b = 5;
	display(a, b);

	a = 9;
	b = -5;
	display(a, b);

	a = -9;
	b = -5;
	display(a, b);

	a = -9;
	b = 5;
	display(a, b);

	return EXIT_SUCCESS;
}

void display(int a, int b) {
	printf("%+d / %+d = %+d, %+d %% %+d = %+d\n", a, b, a / b, a, b, a % b);
}

输出:

+9 / +5 = +1, +9 % +5 = +4
+9 / -5 = -1, +9 % -5 = +4
-9 / -5 = +1, -9 % -5 = -4
-9 / +5 = -1, -9 % +5 = -4


你可能感兴趣的:(模运算%的结果符号)