MSVC 編譯器(C 模式)遵循 **C89/C90 標準**:**所有變量聲明必須在代碼塊開頭**,不能夾雜在執行語句之後。C99/C11 才允許混合聲明,但 MSVC 對 C 標準支持有限。
int main() {
srand((unsigned)time(NULL));
int x = rand() % 10 + 1; // 錯誤:執行語句後聲明
...
}
int main() {
// 1. 所有聲明
int x, y, z, i = 0, j = 0, flag;
// 2. 執行語句
srand((unsigned)time(NULL));
x = rand() % 10 + 1;
y = rand() % 10 + 1;
...
}
寫 C 代碼時**習慣性將所有變量聲明集中在函數開頭**,兼容性最好,閱讀時也能一覽全函數使用的變量。