Arduino 'for'循环报错:‘expected unqualified-id before 'for'’问题咨询
搞定Arduino的
expected unqualified-id before 'for'报错 嘿,我一眼就看到问题出在哪了,咱们一步步来解决:
核心错误原因
1. for循环放错位置了
你把那段for循环直接写在了loop()函数外面,Arduino的所有执行代码都得塞进setup()或者loop()函数里——编译器根本不知道该什么时候执行函数外的代码,自然会抛出语法错误。
2. for循环语法完全不对
你写的for (i <= 50)不符合C/C++的标准格式,正确的for循环结构是:
for (初始化变量; 判断条件; 变量增量/减量) { // 要重复执行的代码 }
结合你的需求修复后的完整代码
我猜你是想生成50个随机数,排序后再打印出来?那我把完整的逻辑都帮你补全并修正了:
int array[50]; int i = 0; void setup() { Serial.begin(9600); // 先生成50个0-999的随机数填充数组 for (i = 0; i < 50; i++) { array[i] = random(0, 1000); } // 用冒泡排序做*升序排列*(想*降序*的话改个判断条件就行) for (int j = 0; j < 49; j++) { for (int k = 0; k < 49 - j; k++) { // 升序:如果前一个数比后一个大,就交换位置 if (array[k] > array[k+1]) { int temp = array[k]; array[k] = array[k+1]; array[k+1] = temp; } // 降序的话把上面的`>`改成`<`就行 } } // 打印排序后的结果(修正了你原来的字符串拼接错误) Serial.println("升序排序后的数组:"); for (i = 0; i < 50; i++) { Serial.print("Position "); Serial.print(i+1); Serial.print(": "); Serial.println(array[i]); delay(100); // 放慢打印速度方便查看 } } void loop() { // 这里可以留空,因为排序和打印在setup里已经执行一次了;如果要重复执行,把逻辑移到这来 }
额外提醒
你原来写的Serial.println ("Position " + array[i]);有问题,Arduino里字符串和整数不能直接用+拼接,得像我这样用Serial.print()分开输出,或者转成String类型再拼接。
内容的提问来源于stack exchange,提问作者Jonny
相关产品推荐
相关产品推荐

