java、C语言中default

来源:互联网 发布:sqlserver中的in的用法 编辑:程序博客网 时间:2024/06/05 16:05

我学习编程是从java开始的,简单的学过C,但是许久没用,早已忘得差不多。今天室友提出一个C语言问题,我草草的算了下发现和答案不一样,于是开始细究。代码如下:

<span style="font-size:12px;">#define PRINT(x) printf("%d",x)</span><span style="font-size: 18px;"></span><span style="font-size:12px;">void main(){int i=4,j,x;int a[]={1,2,3,4,5,6,7,8,9,10};for(j=4;j;j--){switch(j){case 1:case 2:x=a[i+1];PRINT(x);case 3:x=a[--i+j];PRINT(x);default:PRINT(j);printf("\n");}}system("pause");}</span>

            最开始我算的答案是:       4 

7

5
实际答案却是:4

    73

    55

于是手动把代码敲进ide进行调试,终于发现我的错误所在:

1.我粗心大意没注意没注意case结束的时候没有break;

2.我最初认为default的意思是没找到匹配的case后执行,否则就不执行,但实际上switch中的开关若没有break的话会逐句执行连default也不例外,case3结束时没有break,所以依旧会执行default,第二次循环会输出73。

3.最后还是粗心case2的break后以为跳出循环。。。。所以最后应该输出55.

同时我也在java进行了调试,结果是一样的,附上代码:

<span style="font-size:12px;"><span style="white-space:pre"></span>int i = 4,x;int a[]={1,2,3,4,5,6,7,8,9,10};for(int j=4;j>0;j--){switch (j) {case 1:case 2:x=a[i+1];System.out.print(x);break;case 3:x=a[--i+j];System.out.print(x);default:System.out.print(j);System.out.println("");break;}}</span>



0 0
原创粉丝点击