不正确计算

时间:2016-10-08 17:25:02

标签: c

所以小伙子们,我对编程和C语言都很陌生,只是为了好玩而学习:)所以Currnt的计算非常正确,它可以计算4/2但是当我尝试6/15它只是回答0 ,任何想法为什么?

    #include <stdio.h>
    int main () {

    int Volt,Resst;
    float Currnt;

    printf("Enter the value of resistor:");
    scanf("%d",&Resst);
    printf("Enter the voltage of power supply:");
    scanf("%d",&Volt);
    if (Volt > 10)
    printf("The voltage is too big\n");
    else if (0 > Volt)
    printf("Not a valid input\n");
    else {
    Currnt=Volt/Resst;
    printf("The current is %.2f A\n",Currnt);
    }

    }

3 个答案:

答案 0 :(得分:1)

由于您的嵌套,printf超出了所有if条件,因此您始终可以看到&#34;当前是......&#34;

答案 1 :(得分:1)

如果if / else语句块包含多个命令(就像你的最后一个else分支一样),你需要使用花括号:

if (Volt > 10)
    printf("The voltage is too big");
else if (0 > Volt)
    printf("Not a valid input");
else {
    Current=Volt/Rest;
    printf("...");
}

为了避免这样的错误,即使块中只有一个命令,最好始终使用花括号:

if (Volt > 10) {
    printf("The voltage is too big");
}
else if (0 > Volt) {
    printf("Not a valid input");
}
else {
    Current=Volt/Rest;
    printf("...");
}

<强>更新

在C / C ++中,表达式的结果类型(在您的情况下是除法)完全基于其中的变量类型。 在您的情况下,表达式为int / int,因此结果将被视为int - 您存储它的变量类型无关紧要。 解决方案是将至少一个表达式变量显式地转换为float

Currnt = (float)Volt/Resst;

Currnt = Volt/(float)Resst;

Currnt = (float)Volt/(float)Resst;

答案 2 :(得分:1)

在任何迭代或条件语句中,编译器会自动假定语句之后的行在条件或迭代语句之下。

但是如果我们想在条件下运行多个行,则必须使用大括号来告诉编译器在条件下运行所有​​这些行