关于c程序中break语句的一个问题
A question about break statement in c programming
我写了这个循环来添加数字,如果输入的数字小于零,则 break
退出循环,最后打印计算出的数字而不添加负数。但问题是即使我在添加之前写了 break
语句当我输入 15 和 15 和 -2 输出是 28 而不是 30
我找到了解决方法,我想知道的是为什么
谢谢。
#include <stdio.h>
void main()
{
int j = 1, num = 0, rslt = 0;
while (1) {
if (num < 0) break;
printf("enter a number : ");
scanf("%d", &num);
rslt = rslt + num;
}
printf("the resluts are %d\n", rslt);
}
目前,在将上一次迭代的输入添加到结果中之后,您正在有效地测试它。相反,在用户输入数字后立即检查数字,然后再执行任何计算。
#include <stdio.h>
int main(void)
{
int num = 0, rslt = 0;
while (1) {
printf("enter a number : ");
scanf("%d", &num);
if (num < 0)
break;
rslt += num;
}
printf("the results are %d\n", rslt);
}
您可能还想检查 scanf
returns 您期望的 转换 成功次数(在本例中为一次),以处理用户输入无效输入的事件。
if (1 != scanf("%d", &num))
break;
我写了这个循环来添加数字,如果输入的数字小于零,则 break
退出循环,最后打印计算出的数字而不添加负数。但问题是即使我在添加之前写了 break
语句当我输入 15 和 15 和 -2 输出是 28 而不是 30
我找到了解决方法,我想知道的是为什么
谢谢。
#include <stdio.h>
void main()
{
int j = 1, num = 0, rslt = 0;
while (1) {
if (num < 0) break;
printf("enter a number : ");
scanf("%d", &num);
rslt = rslt + num;
}
printf("the resluts are %d\n", rslt);
}
目前,在将上一次迭代的输入添加到结果中之后,您正在有效地测试它。相反,在用户输入数字后立即检查数字,然后再执行任何计算。
#include <stdio.h>
int main(void)
{
int num = 0, rslt = 0;
while (1) {
printf("enter a number : ");
scanf("%d", &num);
if (num < 0)
break;
rslt += num;
}
printf("the results are %d\n", rslt);
}
您可能还想检查 scanf
returns 您期望的 转换 成功次数(在本例中为一次),以处理用户输入无效输入的事件。
if (1 != scanf("%d", &num))
break;