所以小伙子们,我对编程和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);
}
}
答案 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)
在任何迭代或条件语句中,编译器会自动假定语句之后的行在条件或迭代语句之下。
但是如果我们想在条件下运行多个行,则必须使用大括号来告诉编译器在条件下运行所有这些行