第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在switch語句中聲明變量

在switch語句中聲明變量

C
子衿沉夜 2019-09-21 14:15:35
我看到了這個問題的一些答案,但我明白了–您無法在內(nèi)聲明和分配變量switch。但是我想知道以下是否是正確的拋出錯誤錯誤:“ int”之前的預(yù)期表達(dá)式碼:switch (i) {    case 0:        int j = 1;        break;}為什么在呼叫NSLog()之前沒有打入電話?switch (i) {    case 0:        NSLog(@"wtf");        int j = 1;        break;}
查看完整描述

3 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗 獲得超5個贊

如果您根據(jù)語言的語法進(jìn)行操作,則實際上可以在開關(guān)中聲明變量。由于出現(xiàn)錯誤,因為“ case 0:”是標(biāo)簽,在C語言中,在標(biāo)簽后的第一個語句中聲明為非法是非法的-請注意,編譯器需要表達(dá)式,例如方法調(diào)用,常規(guī)賦值等。(盡管可能很奇怪,但這是規(guī)則。)


當(dāng)您首先放置NSLog()時,避免了此限制。您可以將案例的內(nèi)容括在{}中以引入作用域,也可以將變量聲明移到開關(guān)之外。您選擇哪種取決于個人喜好。請注意,用{}括號聲明的變量僅在該范圍內(nèi)有效,因此使用該變量的任何其他代碼也必須出現(xiàn)在這些括號內(nèi)。


編輯:


順便說一下,這種怪異并不像您想象的那樣普遍。在C和Java中,在for,while或do循環(huán)甚至if和else子句中使用局部變量聲明作為lone語句(意思是“不用大括號括起來”)也是非法的(實際上,這是覆蓋益智游戲#55 “的Java謎題”,我強烈建議)。我認(rèn)為,我們一般不寫這樣的錯誤開始,因為這是毫無意義的變量聲明為在這樣的背景下的語句。隨著開關(guān) / 但是,案例構(gòu)造有些人在休息后就省略了花括號 語句是控制流的關(guān)鍵語句。


要查看編譯器是否符合要求,請將以下可怕的,毫無意義的代碼段復(fù)制到您的(Objective-)C代碼中:


if (1)

    int i;

else

    int i;

for (int answer = 1; answer <= 42; answer ++)

    int i;

while (1)

    int i;

do

    int i;

while (1);

始終使用{}大括號分隔此類構(gòu)造體的另一個原因。:-)


查看完整回答
反對 回復(fù) 2019-09-21
?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗 獲得超7個贊

我之前曾遇到過這個問題,結(jié)論是您只是將代碼放在了一個塊中。


switch (i) {

case 0:

    {

        int j = 1;

        break;

    }

}


查看完整回答
反對 回復(fù) 2019-09-21
?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗 獲得超7個贊

我使用的另一個簡單的解決方法是在聲明之前添加一個空表達(dá)式(分號)。這避免了將變量范圍限制為代碼塊(或某些case語句帶有代碼塊,而有些case語句沒有代碼塊)。


switch (i) {

    case 0:;

        int j = 1;

        break;

}


查看完整回答
反對 回復(fù) 2019-09-21
  • 3 回答
  • 0 關(guān)注
  • 811 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號