如何解决C语言出现break statement is not within loop or switch错误
问题原因与解决方案
核心错误定位
- for循环语句末尾多了多余的分号
你代码中写的for(i=1; i<=n; ++i);末尾的分号会被C语言识别为for循环的全部循环体,也就是说这个for循环只会空转执行到结束,不会执行后面大括号内的任何代码。大括号包裹的内容属于和for循环完全无关的独立代码块,break语句写在独立代码块中自然不符合C语法要求,因此报出“break statement is not within loop or switch”错误。 - 累加逻辑存在错误
你当前写的sum = sum + sum逻辑是把sum自身的值翻倍,无法实现累加用户输入数值的需求,需要修改为累加输入的num变量。
修正后的完整代码
#include<stdio.h> int main() { float num, sum=0; int i,n; printf("Maximum no. of inputs\n"); scanf("%d", &n); // 去掉了for末尾多余的分号 for(i=1; i<=n; ++i) { printf("Enter number %d: ", i); scanf("%f", &num); if(num<0.0) break; //for loop breaks if num < 0.0 // 修改为累加输入的num sum = sum + num; } printf("Total addition: %.2f ", sum); return 0; }
语法补充说明
C语言中break语句的使用有严格的作用域限制:仅能出现在for/while/do-while循环内部,或者switch分支语句内部,不能在独立代码块、函数全局等其他位置单独使用。
内容的提问来源于stack exchange,提问作者Zeref slayer
相关产品推荐
相关产品推荐

