Code Bye

为什么判断能否为偶数的第一个处理子程序中0没有输出

#include<stdio.h>
int isEven(int m) //判断能否为偶数
{
int ret;
if(m%2 == 0)
ret = m;
else
ret = 0;
return ret;       //为什么这子程序处理后没有输出0
}
int is(int m)//这种判断方式0没有少
{
return m%2 == 0?1:0;
}
int main()
{
int a[10];
int i;
for(i=0;i<9;i++)
{
if(isEven(i))
printf(“%d\n”,i);
}
printf(“\n\n”);
for(i=0;i<9;i++)
{
if(is(i))
printf(“%d\n”,i);
}
return 0;
}
解决方案

20

isEven()返回的是m,所以m是0的时候也就和奇数一样返回0了。
而is()返回的就很明确,不是1就是0

20

isEven(i)中,i=0,函数返回值是0,判断条件为假,所以0不会输出;
is(i)中i=0,return m%2 == 0?1:0; 返回的是1,判断条件为真,所以0会输出。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么判断能否为偶数的第一个处理子程序中0没有输出