記一次學習範圍for的時候碰到的for迴圈內加註釋的蜜汁bug
阿新 • • 發佈:2022-01-19
問題程式碼:
#include <bits/stdc++.h> #include <vector> using namespace std; int main() { //string 要引用 string s = "hello"; for (auto &i : s) //書上說i 是char型別,那s[n]呢? i = toupper(i); //改變成大寫,不影響s的值 // cout << s << endl; //s的值是 hello //array int arr[5] = {1, 2, 3, 4, 5}; for (auto i : arr) //cout << arr[i] << endl; int a[] = {1, 2, 3, 5, 2, 0}; vector<int> counts(a, a + 6); for (auto count : counts) cout << count << " "; cout << endl; }
只跑後面的就能跑:
#include <bits/stdc++.h> #include<vector> using namespace std; int main() { int a[] = {1, 2, 3, 5, 2, 0}; vector<int> counts(a, a + 6); for (auto count : counts) cout << count << " "; cout << endl; }
百思不得其解,最後終於發現是註釋的問題:
向for迴圈加括號就可以跑
去掉註釋也可以跑:
#include <bits/stdc++.h> #include<vector> using namespace std; int main() { //string 要引用 string s = "hello"; for (auto &i : s) //書上說i 是char型別,那s[n]呢? i = toupper(i); //改變成大寫,不影響s的值 // cout << s << endl; //s的值是 hello //array int arr[5] = {1, 2, 3, 4, 5}; for (auto i : arr) { //cout << arr[i] << endl; } int a[] = {1, 2, 3, 5, 2, 0}; vector<int> counts(a, a + 6); for (auto count : counts) cout << count << " "; cout << endl; }
所以問題是!!!註釋
for迴圈中只有一行程式碼並且不加大括號並且帶打上註釋,!!!報錯!!!
懷疑是編譯器把int a[]這一行也識別成註釋了