|
发表于 2022-10-16 14:10:55
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2022-10-16 14:21 编辑
C 语言负数取余,按正数操作,被除数决定余数的符号,比如,19 % -7 = 5,-19 % 7 = -5,-19 % -7 = -5。就是说,被除数决定余数的符号,与除数无关。
- #include <stdio.h>
- int main(void)
- {
- int a = 53 , b = 21 ;
- printf("%4d %% %4d = %4d\n" , a , -b , a % (-b)) ;
- printf("%4d %% %4d = %4d\n" , -a , b , (-a) % b) ;
- printf("%4d %% %4d = %4d\n" , -a , -b , (-a) % (-b)) ;
- printf("%4d %% %4d = %4d\n" , b , -a , b % (-a)) ;
- printf("%4d %% %4d = %4d\n" , -b , a , (-b) % a) ;
- printf("%4d %% %4d = %4d\n" , -b , -a , (-b) % (-a)) ;
- }
复制代码
编译、运行实况:
- D:\[00.Exerciese.2022]\C>g++ -o x x.c
- D:\[00.Exerciese.2022]\C>x
- 53 % -21 = 11
- -53 % 21 = -11
- -53 % -21 = -11
- 21 % -53 = 21
- -21 % 53 = -21
- -21 % -53 = -21
- D:\[00.Exerciese.2022]\C>
复制代码
根据这个结论,a % 2 同样可以用来判断负值 a 的奇偶性,只不过要把判断条件改一下
需要把
改为
这样,就可以做到正负数通杀! |
|