1. 程式人生 > 其它 >記一次學習範圍for的時候碰到的for迴圈內加註釋的蜜汁bug

記一次學習範圍for的時候碰到的for迴圈內加註釋的蜜汁bug

問題程式碼:

#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[]這一行也識別成註釋了