我所有的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;
}
答案 0 :(得分:4)
在C中,逗号运算符计算其第一个参数并丢弃结果,然后计算第二个参数并返回它。
因此,如果x
为21
且y
为22
,则表达式x,y
将评估为22
。 x
评估为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(" ");