第六行的int i = 0;在每轮循环均会执行,为什么能编译成功而不是提示重复定义?
欢迎选择我的课程,让我们一起见证您的进步~~
C++的變數作用域問題
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int a = 3; int i = 3; { int i = 1; } cout << i << endl; // 3 }
類似全域變數和局部變數的概念。
一個變數只在「{}」中間起作用,出了這個大括號,這個變數就自動刪除了。
編譯器沒有那麼“笨”,它會知道你的意思是在迴圈中使用一個被初始化為0的變數。而上邊a就不同了,編譯器搞不清楚為什麼要把a定義兩遍,很可能是誤輸入,所以會報錯。
C++的變數作用域問題
類似全域變數和局部變數的概念。
一個變數只在「{}」中間起作用,出了這個大括號,這個變數就自動刪除了。
編譯器沒有那麼“笨”,它會知道你的意思是在迴圈中使用一個被初始化為0的變數。而上邊a就不同了,編譯器搞不清楚為什麼要把a定義兩遍,很可能是誤輸入,所以會報錯。