本帖最后由 jackz007 于 2021-1-9 21:47 编辑
每一个 case 的语句块必须以一个 break 结束,否则,从 case 语句的进入点开始,将会顺序执行遇到的每一条语句,而无视这些语句是否属于本 case 语句块。
例如,当 i 为 6 的时候,将会从 6 的人口进入,执行完属于自己的语句块后,还会继续向后执行 i = 7、8、9、10、default 的语句块,全部执行完才会罢休。
所以,引起你疑问的答案就是这个值其实根本就不属于 i = 6 ,而是属于 default 的计算结果。
- switch(i)
- {
- case 0: j = n*0.1;braek;
- case 1: j = 100000*0.1+(n-100000)*0.075;braek;
- case 2: j = 10000+7500+(n-200000)*0.05;braek;
- case 3: j = 10000+7500+(n-200000)*0.05;braek;
- case 4: j = 10000+7500+10000+(n-400000)*0.03;braek;
- case 5: j = 10000+7500+10000+(n-400000)*0.03;braek;
- case 6: j = 10000+7500+10000+6000+(n-600000)*0.015;braek;
- case 7: j = 10000+7500+10000+6000+(n-600000)*0.015;braek;
- case 8: j = 10000+7500+10000+6000+(n-600000)*0.015;braek;
- case 9: j = 10000+7500+10000+6000+(n-600000)*0.015;braek;
- case 10: j = 10000+7500+10000+6000+6000+(n-1000000)*0.01;braek;
- default : j = 10000+7500+10000+6000+6000+(n-1000000)*0.01;braek;
- }
复制代码