我正在通过哈佛大学的CS50课程学习计算机科学。我正在学习如何定义新功能并将两个功能链接在一起。我随机创建了以下脚本。我的new_function无法向主函数传递错误的值,因此我的“ while”循环正在像狂野的西部那样打印。有什么明显的我想念的地方吗?谢谢!
#include <cs50.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
bool new_function(int x1);
int main(void)
{
int whatever = get_int("get_int now!\n");
while(new_function(whatever) == true)
{
printf("still working\n");
}
}
bool new_function(int x1)
{
for(int i = 1; i <= x1; i++)
{
if(i != 5)
return true;
else if (i == 5)
return false;
}
return false;
}
答案 0 :(得分:1)
要使while循环继续进行,条件必须为true。深入了解
new_function(whatever) == true
个条件。所以结果本质上取决于
new_function(int)
是您上面写的。
您的new_function(int)
接收的值是整数。
对于这种类型,它的范围是整数,从2减去3到正数(2 3-1-1)的值,整数为4字节。
接下来,在for循环开始之前,它将创建一个初始化为1的新变量i
,然后检查i
是否小于或等于x1
。如果为true,则继续进行,否则结束for
循环并返回false
。因此,从这些步骤中,我们看到,对于x1
小于1的值,new_function(int x1)
返回false,否则进入循环。
进一步,进入for循环,其中i
从1到x1
的情况是假设x1
等于或大于1,则有条件检查{{1 }},if (i != 5)
始终初始化为1,因此与5不同,它始终执行i
,而未达到else部分。
因此,只要提供大于0的数字,您的代码就会像狂野西部一样打印。 :)