C语言分支语句笔记

2 阅读2分钟

if-elseif-else

注意点1:

  • if(表达式为真,即非0) --> 执行{}中的语句
  • {}中语句是两条,不可省略{}
int age = 22;
if (age < 18) // 当表达式为真,即非0时执行{}中的语句
{             //{}中语句是两条,不可省略{}
    printf("未成年人\n");
    printf("不能饮酒\n");
}
else if (age >= 18 && age < 28)
    printf("青年\n"); // 当{}中语句只有一条时,可省略{}
else
{ //{}中语句是两条,不可省略{}
    printf("成年人");
    printf("可以打游戏");
}

注意点2:

  • else和离它最近的if进行匹配,注意因对其格式问题而导致误判结果
int a = 0;
int b = 2;
if (a == 1)
    if (b == 2)
        printf("hehe\n");
// 这个else是和if(b==2)来匹配的
// 即使else和上边的if(a==1)对齐也要能看出这个else是和离它最近的if(b==2)来匹配的
else
    printf("haha\n");

注意点3:

当用==判断变量存储的数是否和常量相等时为避免将"=="写为"="可以采用"常量==变量"格式

int num = 3;
if (5 == num) // "常量==变量"格式,等价于if(num==5)
{
	printf("haha\n");
}
 if (5 = num) // 漏写 = 编译器会报错
{
    printf("haha\n");
}

switch-case-default-break

注意点:

  • switch(整型表达式)
  • case 整型常量表达式(字符也可以,因为存的是ASCII码):
  • 没有break要继续执行下一个case分支
  • 一个switch语句配一个default:,default最好也要搭配break一起用
  • switch允许嵌套但嵌套的switch遇到break时只中断本层嵌套的switch
int n = 1;
    int m = 2;
    switch (n) // switch(整型表达式)
    {
    case 1:  // case 整型常量表达式(字符也可以,因为存的是ASCII码)
        m++; // 没有break要继续执行下一个case分支
    case 2:
        n++;       // 没有break要继续执行下一个case分支
    case 3:        // 没有break要继续执行下一个case分支
        switch (n) // switch允许嵌套
        {
        case 1:
            n++;
        case 2:
            m++;
            n++;
            break; // 这个break中断的是嵌套的switch不会把外面大的switch也中断
        }
    case 4:
        m++;
        break; // 有break,执行这个case后中断,程序结束
    default:
        break;
    }
    printf("m=%d, n=%d\n", m, n); // m=5,n=3