作者yauhh (喲)
看板C_and_CPP
標題Re: [問題] case後面接括弧?
時間Sat Mar 21 12:59:43 2009
※ 引述《micklin (離鄉背井的米克)》之銘言:
: 在某本書上看到這樣的例子
: switch(Number){
: case(1,3,5):{
: OddNumber=OddNumber+1;
: OddSum=OddSum+Number;
: }
: break;
: case(2,4,6):{
: EvenNumber=EvenNumber+1;
: EvenSum=EvenSum+Number;
: }
: break;
: default:printf("Error Input");
: }
: 我的問題是, case後面可以利用括弧的方法把相關的值放在一起嗎?
: 這個程式碼我用gcc跑, compile會過, 但是不管Number的值為何,
: 結果都是印出Error Input, 也就是default的部份.
: 謝謝!
會過嗎? gcc 4.3.2(Ubuntu 4.3.2-lubuntu12)編譯都丟出 error,
說 case lable does note reduce to an integer constant.
可能是該書作者認為自己可以把碼寫得比較精簡,卻忘了想想逗號的意思.
逗號是銜接兩個式子的意思,它會先算第一個式子,再算第二個式子,然後傳回第二個
式子的值.
假如 case(1,3,5) 是可以容許的寫法,根據逗號的語義,就變成 "case 5",
而 case(2,4,6) 變成 "case 6". 這不是他本來想要的程式.
這是哪一本書啊,告訴我們,來觀摩觀摩.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.228.248
→ MOONRAKER:是啊,這是哪一本「傑作」,快告訴大家。 03/22 10:51
推 micklin:謝謝!!書名我還是不要說好了 XD 03/22 21:58