Notas del lenguaje C: declaración de rama

contenido

1.if declaración (notas)

1.1 más coincide con el más cercano si

2. declaración de cambio

2.1 interrupción en la declaración de cambio

2.2 cláusula por defecto


1.if declaración (notas)

1.1 más coincide con el más cercano si

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}
//什么都不会显示,因为else是和与自己最近的if匹配
//注:该代码可能会让人误以为else与if(a == 1)匹配

Modificado de la siguiente manera:

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }       
    return 0;
}                                //haha

Buenos hábitos de programación:

Al juzgar si dos valores son iguales en los paréntesis if, se recomienda colocar la constante en el lado izquierdo de == para facilitar la corrección de errores en caso de errores.

Por ejemplo, si (a == 4), es fácil escribir si (a = 4), pero el programa aún se ejecutará, por lo que es fácil encontrar errores. Y cuando escribimos if(4 = a), el compilador reportará un error directamente , para que sea más fácil encontrar la ubicación del error al escribir errores.

Tal como:

#include <stdio.h>
int num = 1;
if(5 == num)
{
    printf("hehe\n");
}  //当错写为5 = num的时候,编译器会直接报错,方便我们找到错误的位置

2. declaración de cambio

Una declaración de cambio también es una declaración de ramificación. A menudo se utiliza en situaciones de varias sucursales .

Nota: Los paréntesis de cambio deben ser constantes enteras

2.1 interrupción en la declaración de cambio

En la declaración de cambio, no podemos implementar directamente la rama y usarla con break para lograr la rama real.

Tal como:

#include <stdio.h>
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;    
        case 4:
            printf("星期四\n");
            break;    
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期天\n");    
            break;
   }
    return 0;
}

A veces nuestras necesidades cambian:

1. Al ingresar 1-5, la salida es "día de la semana";

2. Cuando ingrese 6-7, emita "fin de semana";

Así que modifica el código para:

#include <stdio.h>
//switch代码演示
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            printf("weekday\n");
            break;
        case 6:
        case 7:
            printf("weekend\n");
            break;
   }
    return 0;
}

Buenos hábitos de programación :

Agregue una declaración de ruptura después de la última declaración de caso.

(La razón de esto es evitar olvidar agregar una declaración de interrupción después de la última declaración de caso anterior)

2.2 cláusula por defecto

Cuando el valor de la expresión de cambio no coincide con los valores de todas las etiquetas de casos, se ejecutan las declaraciones que siguen a la cláusula predeterminada.

Por lo tanto, solo puede aparecer una cláusula predeterminada en cada declaración de cambio.

Pero puede aparecer en cualquier parte de la lista de declaraciones, y el flujo de la declaración ejecutará la cláusula predeterminada como si fuera una etiqueta de caso.

Buenos hábitos de programación :

Es una buena práctica poner una cláusula predeterminada en cada declaración de cambio, y tal vez incluso agregar un descanso después de ella.

práctica:

//m = ? n = ?
#include <stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch (n)
   {
    case 1:
            m++;                   //m = 3
    case 2:
            n++;                   //n = 2
    case 3:
            switch (n)
           {//switch允许嵌套使用
             case 1:
                    n++;
             case 2:
                    m++;           //m = 4
                    n++;           //n = 3
                    break;
           }
    case 4:
            m++;                   //m = 5
            break;
    default:
            break;
   }
    printf("m = %d, n = %d\n", m, n);  //m = 5 n = 3
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/m0_62934529/article/details/123143970
Recomendado
Clasificación