首页 > 解决方案 > 带有 if 条件的未使用变量

问题描述

我有下面的测试代码,我的程序将允许输入一个float数字。有一个条件检查浮点值是否小于或等于1但大于0。然后,变量bc将以一种方式定义。如果输入是 > 1b并且c将以另一种方式定义。但是,使用下面的代码,程序总是告诉我 mybc未使用。但我已经在printf. 我不知道错误是什么。谁能解释一下背后的原理?

#include <stdio.h>
#include <stdlib.h>


int main (int argc, char* argv[])
{
    float ratio = atof(argv[1]);

    if (argc != 2)
    {
        return 1;
    }

    if (ratio > 0.0 && ratio <= 1.0)
    {
        float b = 3/4;
        float c = 4/5;
    }
    else if (ratio > 1.0)
    {
        float b = 1;
        float c = 2;
    }

    printf("b and c are %f, %f", b, c);
}

标签: ccs50

解决方案


它与范围有关。如果您在一个范围内声明一个变量,它将在该范围的末尾不再存在。大括号内的语句 { 和 } 处于同一范围内。在这里阅读更多

这样做:

int main (int argc, char* argv[])
{
    if (argc != 2) return 1;        

    float ratio = atof(argv[1]);

    float b, c;

    if (ratio > 0.0 && ratio <= 1.0) {
        b = 3.0/4;
        c = 4.0/5;
    } else if (ratio > 1.0) {
        b = 1;
        c = 2;
    }

    printf("b and c are %f, %f", b, c);
}

我也更改3/43.0/4, 因为整数算术3/4将评估为。0

您的代码的另一个问题是您在将第一个参数转换为浮点数之后检查了参数的数量。这应该在之前完成。


推荐阅读