作者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
1F:→ MOONRAKER:是啊,这是哪一本「杰作」,快告诉大家。 03/22 10:51
2F:推 micklin:谢谢!!书名我还是不要说好了 XD 03/22 21:58