原来是我错付了 发表于 2022-10-16 13:45:48

怎么修改使其能判断负数的奇偶性


为什么只能判断正数的奇偶性??????

tommyyu 发表于 2022-10-16 13:48:22

也可以判断负数啊

jackz007 发表于 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:\\C>g++ -o x x.c

D:\\C>x
53 %-21 =   11
-53 %   21 =-11
-53 %-21 =-11
21 %-53 =   21
-21 %   53 =-21
-21 %-53 =-21

D:\\C>
      根据这个结论,a % 2 同样可以用来判断负值 a 的奇偶性,只不过要把判断条件改一下
      需要把
if (a % 2 == 1)
      改为
if(a % 2)
      这样,就可以做到正负数通杀!
页: [1]
查看完整版本: 怎么修改使其能判断负数的奇偶性