c - 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';
}
解决方案
当你int a
在里面声明main
为
int a=rand()%512;
你正在隐藏你的全局变量a
。in main 是一个不同的a
变量,它的作用域只对函数是局部的main
。因此,当您使用a
内部的值时char abcd(char c)
,该值是全局变量a
,默认初始化为 0。
另外,为什么要将char c
变量传递给 function abcd
。你没有使用它。请考虑将您的函数重命名为更清楚地描述其意图的名称。
推荐阅读
- python - 如何从 Python 字典列表中删除重复项?
- c# - 一个视图中的多对多局部视图关系
- wordpress - 我无法在 bitnami wordpress 中安装一些插件
- powershell - powershell中的POST方法给出405错误
- graphics - 有没有比在方程 x^2 + y^2 = r^2 中尝试点更好的方法来生成圆上的点?
- vb.net - 如何在 vb.net 中使用存储过程填充 winform 图表
- python - 遍历字符串列表的问题
- flutter - 获取一个小部件相对于另一个小部件的位置
- spring-boot - 使用 JWT 身份验证登录时堆栈溢出
- c++ - 在 Visual C++ 应用程序中添加外部 C 库 - “错误 LNK2028”和“错误 LNK2019”