C/C++ 語(yǔ)言的 switch-case 語(yǔ)句中常見(jiàn)下面兩種風(fēng)格的代碼, 一種在 case 后面加了花括號(hào), 而另一種不加. 這似乎僅僅是編程風(fēng)格的不同, 但事實(shí)上, 兩種寫(xiě)法有作用域方面的考慮. // style A switch(c){ case 1: // break; } // style B switch(c){ case 1: { // } break; } 在 C/C++ 語(yǔ)言中, 被花括號(hào)包圍的代碼運(yùn)行在一個(gè)新的作用域內(nèi), 當(dāng)然也繼承之前的作用域. 所以在花括號(hào)內(nèi)定義的變量, 在外面是不可用的. 所以, 當(dāng)在不同的 case 里定義了同名的變量, 不加花括號(hào)將會(huì)導(dǎo)致變量 redeclaration 錯(cuò)誤. // 錯(cuò)誤! switch(c){ case 1: int a; break; case 2: int a; // a redeclared break; } // OK switch(c){ case 1: { int a; } break; case 2: { int a; } break; } |
|
來(lái)自: pgj555 > 《C 學(xué)習(xí)》