首页 > 解决方案 > C中的简单if语句总是返回true

问题描述

我没有时间深入解释它,它的代码非常简单,但函数总是返回'y'(=true)它期望将每个数字从1写入生成的随机数的平方根并决定它是否可分但是当我运行它时,函数中的 if 语句总是返回 true

#include <stdio.h>
#include <stdlib.h>
int a,b,i;
char c;
char abcd(char c);
int main()
{
srand(time(NULL));
int a=rand()%512;
 b=sqrt(a);
 i=1;
 do{
    if(abcd(c)=='y')printf("number %d is dividable by %d\n",a,i);
    else printf("number %d is not dividable by %d\n",a,i);
    i++;
}while(i<=b);

return 0;
}
char abcd(char c)
{

    if(a%i==0)return'y';
    else return 'n';

}

标签: c

解决方案


当你int a在里面声明main

int a=rand()%512;

你正在隐藏你的全局变量a。in main 是一个不同的a变量,它的作用域只对函数是局部的main。因此,当您使用a内部的值时char abcd(char c),该值是全局变量a默认初始化为 0。

另外,为什么要将char c变量传递给 function abcd。你没有使用它。请考虑将您的函数重命名为更清楚地描述其意图的名称。


推荐阅读