switch...case多重選擇的問題... |
答題得分者是:tech_state
|
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
各位前輩:
小弟我使用選擇判斷的格式,卻一直出現問題。程式碼如下: void __fastcall TForm1::Button5Click(TObject *Sender)
{
switch(x)
{
case 0:
AnsiString tPna1=Edit10->Text;
AnsiString tPn1=Edit11->Text;
break; case 1:
AnsiString tPna2=Edit10->Text;
AnsiString tPn2=Edit11->Text;
break; case 2:
AnsiString tPna3=Edit10->Text;
AnsiString tPn3=Edit11->Text;
break;
case 3:
AnsiString tPna4=Edit10->Text;
AnsiString tPn4=Edit11->Text;
break; case 4:
AnsiString tPna5=Edit10->Text;
AnsiString tPn5=Edit11->Text;
break; case 5:
AnsiString tPna6=Edit10->Text;
AnsiString tPn6=Edit11->Text;
break; case 6:
AnsiString tPna7=Edit10->Text;
AnsiString tPn7=Edit11->Text;
break; case 7:
AnsiString tPna8=Edit10->Text;
AnsiString tPn8=Edit11->Text;
break; case 8:
AnsiString tPna9=Edit10->Text;
AnsiString tPn9=Edit11->Text;
break; case 9:
AnsiString tPna10=Edit10->Text;
AnsiString tPn10=Edit11->Text;
break; case 10:
AnsiString tPna11=Edit10->Text;
AnsiString tPn11=Edit11->Text;
break;
} } 錯誤訊息如下:
[C Error] Unit1.cpp(443): E2126 Case bypasses initialization of a local variable
[C Error] Unit1.cpp(448): E2126 Case bypasses initialization of a local variable
[C Error] Unit1.cpp(452): E2126 Case bypasses initialization of a local variable
[C Error] Unit1.cpp(457): E2126 Case bypasses initialization of a local variable
[C Error] Unit1.cpp(462): E2126 Case bypasses initialization of a local variable
[C Error] Unit1.cpp(467): E2126 Case bypasses initialization of a local variable
[C Error] Unit1.cpp(472): E2126 Case bypasses initialization of a local variable
[C Error] Unit1.cpp(477): E2126 Case bypasses initialization of a local variable
[C Error] Unit1.cpp(482): E2126 Case bypasses initialization of a local variable
[C Error] Unit1.cpp(487): E2126 Case bypasses initialization of a local variable
[C Warning] Unit1.cpp(493): W8004 'tPn11' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna11' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPn10' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna10' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPn9' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna9' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPn8' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna8' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPn7' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna7' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPn6' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna6' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPn5' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna5' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPn4' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna4' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPn3' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna3' is assigned a value that is never used
[C Warning] Unit1.cpp(493): W8004 'tPna2' is assigned a value that is never used 可是我程式前面使用都沒有問題:
switch(i)
{
case 0:
strcpy(pLi, "0000");
break;
case 1:
strcpy(pLi, "0001");
break;
case 2:
strcpy(pLi, "0002");
break;
case 3:
strcpy(pLi, "0003");
break;
} 我真的不知道哪裡的問題,請各位大大多加指導!謝謝~
P.S.: x參數我是設為int x;
其他的我是宣告為:ex: char pLi[32]; 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
leeli您好: 您必須用大括號{},將每一個
AnsiString tPna1=Edit10->Text;
AnsiString tPn1=Edit11->Text;
括起來
即
int x; switch(x) { case 0: { AnsiString tPna1=Edit10->Text; AnsiString tPn1=Edit11->Text; } break; case 1: { AnsiString tPna2=Edit10->Text; AnsiString tPn2=Edit11->Text; } break; case 2: { AnsiString tPna3=Edit10->Text; AnsiString tPn3=Edit11->Text; } break; case 3: { AnsiString tPna4=Edit10->Text; AnsiString tPn4=Edit11->Text; } break; case 4: { AnsiString tPna5=Edit10->Text; AnsiString tPn5=Edit11->Text; } break; case 5: { AnsiString tPna6=Edit10->Text; AnsiString tPn6=Edit11->Text; } break; case 6: { AnsiString tPna7=Edit10->Text; AnsiString tPn7=Edit11->Text; } break; case 7: { AnsiString tPna8=Edit10->Text; AnsiString tPn8=Edit11->Text; } break; case 8: { AnsiString tPna9=Edit10->Text; AnsiString tPn9=Edit11->Text; } break; case 9: { AnsiString tPna10=Edit10->Text; AnsiString tPn10=Edit11->Text; } break; case 10: { AnsiString tPna11=Edit10->Text; AnsiString tPn11=Edit11->Text; } break; }順心 <>~我也是在學習的階段,所以請您多多見諒與指教~> 發表人 - |
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
leeli
初階會員 發表:57 回覆:55 積分:27 註冊:2003-06-25 發送簡訊給我 |
|
collonil
中階會員 發表:13 回覆:56 積分:63 註冊:2003-03-26 發送簡訊給我 |
|
tech_state
版主 發表:44 回覆:638 積分:641 註冊:2003-02-10 發送簡訊給我 |
leeli, 您好
為什麼要括號呢?
我的想法是這樣的:因為您在case中有宣告變數,而在case中宣告的變數只能在該case中使用,所以必須要括號來告知系統,此變數的有效範圍在哪裡。
這樣說或許有些攏統,舉個例子吧!
在case中宣告的變數可以看成是在某個function中所宣告的區域(local )變數,而一旦離開case的範圍之後就沒有其他的function認識他了。
如果不想用括號,或是目前在case中宣告的變數在離開case之後還會使用到,那就如JerryKuo所說的,將所有在case中的宣告都拿到switch之外。
switch(x) { case 0: { AnsiString tPna1=Edit10->Text; AnsiString tPn1=Edit11->Text; } break; case 1: { AnsiString tPna2=Edit10->Text; AnsiString tPn2=Edit11->Text; } break; } ShowMessage(tPna1);以上的code會出現Undefined symbol 'tPna1' 以上是個人想法,如有錯誤請指正。 ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之 發表人 - tech_state 於 2003/07/02 17:45:56 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |