虽然循环带我去兜风(C)!

时间:2018-12-15 23:20:27

标签: c cs50

我正在通过哈佛大学的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;
}

1 个答案:

答案 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的数字,您的代码就会像狂野西部一样打印。 :)