for loop的變數 確實只是 local的,出了for loop就看不到。
這點你可以在for loop外面去嘗試印出 idx來驗證 (Compiler會回報error)
max 在 for loop 內部確實是 5566,也印的出來。
但是,理由同上,這個local的max 的生命週期只在for loop而已。
出了 for loop 之後,scope只看的到 第一行的int max = 0;
max印出來的值 自然也是0,合理。
※ 引述《bluesapphire (Blue Sapphire)》之銘言:
: 各位大大好
: 我想問一下
: 以下的 code, 我發現 max 打印出來會是 0 (而不是我腦海預期的 5566)
: 請問一下,我要怎麼在 for loop 那邊,同時宣告 int idx, 以及 assign 值給 max 呢?
: (從實驗結果推估,for loop 的 max 因為前面的 int idx, 導致 compiler 認成 for
: 裡面的 local variable 是 for loop 裡面自己的)
: int max = 0;
: int idxCnt = 10;
: int arr[10];
: for (int idx = 0; max = 5566; idx < idxCnt; idx++) {
^ 這邊應該要放, 才對。
: arr[idx] = idx;
: }
: cout << max << endl;
: actual output: 0
: wanted output: 5566 (dont know how to modify the above code)