zoukankan      html  css  js  c++  java
  • switch语句中default用法详解

    当年学C语言switch开关语句的时候,很多人会告诉你它是这么用的:

    1. switch(表达式){
    2. case常量表达式1: 语句1;break;
    3. case常量表达式2: 语句2;break;
    4. case常量表达式n: 语句n;break;
    5. default: 语句n+1;break;
    6. 其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

    很多人当时都是这么理解的吧。

    好,我们来看这样一个程序

    1. #include <stdio.h>
    2. int main()
    3. {
    4. int c= 0, k;
    5. for (k = 1; k < 3; k++)
    6. switch (k)
    7. {
    8. default:c += k;
    9. case 2:
    10. c++; break;
    11. case 4:
    12. c += 2; break;
    13. }
    14. printf("%d",c);
    15. return 0;
    16. }
    你觉得答案会是多少?

    答案是3。

    分析一下这个题目,首先看上去第一眼就很怪,怎么把default放在第一句了。那么程序是怎么执行的呢?

    当k=1的时候,c+=k ——>c=1 这个时候要注意了,default后面并没有break,所以并不会跳出去,会执行case2,c++

    ——>c=2,遇到break,跳出。

    当k=2的时候,执行case2 ,c++——>c=3;遇到break,跳出。

    所以这里总结一下default的用法:

    如果default语句在所有case最后,此时可以不加break 如果default语句之后还有case语句,如果不加break,则default语句执行过之后会继续下面的case语句,此时必须要在default之后加break语句,不过这种default用法是不推荐的,default顾名思义是缺省情况,只有任何条件都不匹配的情况下才会执行,所以应该将default语句放在所有case结束之后




  • 相关阅读:
    973. K Closest Points to Origin
    919. Complete Binary Tree Inserter
    993. Cousins in Binary Tree
    20. Valid Parentheses
    141. Linked List Cycle
    912. Sort an Array
    各种排序方法总结
    509. Fibonacci Number
    374. Guess Number Higher or Lower
    238. Product of Array Except Self java solutions
  • 原文地址:https://www.cnblogs.com/jpfss/p/9830376.html
Copyright © 2011-2022 走看看