如何在C调试中确定多个数字是奇数还是偶数

时间:2017-03-25 04:03:22

标签: c debugging

我所有的if else语句都有效,但是当我尝试输入一个奇数而后一个偶数时,我会继续得到"两个数字都是偶数。" 我已经尝试了所有的东西,但我完全感到困惑的是,为什么我的代码在遇到偶数而不是奇数时会失败:21 22

#include <stdio.h>

int main()

{

  int x;
  int y;
  printf("Enter two numbers:\n");
  scanf("%d %d",&x,&y);

  if (x,y % 2  == 0)
      printf("Both numbers are even.",x,y);

  else if (x % 2 == 0)
      printf("The first number is even.", x);

  else if (y % 2 == 0)
     printf("The second number is even.", y);

  else
      printf("Both numbers are odd.");


      return 0;
}

2 个答案:

答案 0 :(得分:4)

在C中,逗号运算符计算其第一个参数并丢弃结果,然后计算第二个参数并返回它。

因此,如果x21y22,则表达式x,y将评估为22x评估为21并被丢弃,y评估为22并返回。当然22 % 2 == 0是真的。因此该条件将触发并打印出Both numbers are even.

您的病情必须为((x % 2 == 0) && (y % 2 == 0))

此外,如果你真的想要打印出这些号码,你需要在%d printf()中放置{{1}}(或其中两个在“两个数字”的情况下)。调用

答案 1 :(得分:0)

即使您使用(x,y)%2==0,它也类似于y%2==0

使用if((x%2==0) && (y%2==0))%d内的printf(" ");