《C语言教程》05章 if语句和switch语句


一、if语句

在计算机如此普及的今天,if语句的功能介绍就不说了。其基本语法如下:

//写法一
if (条件表达式) {
    语句
}

//写法二
if (条件表达式) {
    语句
}
else {
    语句
}

//写法三
if (条件表达式) {
    语句
}
else if (条件表达式) {    //else if (条件表达式){语句}部分可重复n遍
    语句
}
else {
    语句
}

else块只能出现在if语法的最后,且最多只能出现1次。else if块能出现若干次,但只能在if块的后面,不能在else块的前面。当各块里面的语句只有一句时,括号{}可以省略。不建议省略,因为省略后下面的语句让人容易糊涂。

//易让人看错的写法                        //表示的是下面的意思
if (x == 1)                               if (x == 1) {
    if (y == 1)                               if (y == 1)
        printf("x和y都等于1");                    printf("x和y都等于1");
else                                          else
    printf("我其实是y==1的else");                 printf("我其实是y==1的else");
                                          }

二、switch语句

switch语句完全可以用if语句代替,每一个case块的最后一句语句要有break语句,否则将运行到下一个case块中去。还需要注意的是,switch语句只适用于基本类型的变量作条件(包括扩充基本类型)。default块可以省略,但小雅建议您不要省略,即使不用也加上。

//基本类型的变量         //假定int i;            //假定char str[];以下是错误的
switch (变量) {          switch (i) {            switch (str) {
    case 表达式1:            case 1:                 case "Sunday":
        语句                     语句                    语句
        break;                   break;                  break;
    case 表达式2:            case 2:                 case "Monday":
        语句                     语句                    语句
        break;                   break;                  break;
    ···                   ···                  ···
    case 表达式n:            case 10:                case "Friday":
        语句                     语句                    语句
        break;                   break;                  break;
    default:                 default:                default:
        语句                     语句                    语句
        break;                   break;                  break;
}                        }                       }

三、( ? :)运算符

(表达式 ? 值1 :值2)这是带运算符的表达式,意思是:如果“表达式”的值为“真”,则返回“值1”,否则返回“值2”。if是控制语句而不是运算符,也不是表达式。

y = (x==2 ? 100 : 50) ;

//写成如下相同功能的if语句
if (x == 2) {
    y = 100; 
}
else {
    y = 50;
}

四、关于逻辑表达式

逻辑表达式又叫布尔表达式,前面章节已经说过,布尔表达式只有2个值:TRUE和FALSE,即“真”和“假”。这其实是整型,0代表FALSE,0以外全是TRUE。因此逻辑表达式的写法就变得眼花潦乱。

//x不等于0时为true     //同样的写法
if (x) {               if (x != 0) {
    y = 100 ;              y = 100 ;
}                      }
else {                 else {
    y = 50 ;               y = 50 ;
}                      }
//x等于0时为true     //同样的写法                //少写=,意义就不一样了
if (!x) {               if (x == 0) {            if (x = 0) {    //将0赋给x
    y = 100 ;              y = 100 ;                y = 100 ;    //不可能运行这一句
}                      }                         }
else {                 else {                    else {
    y = 50 ;               y = 50 ;                 y = 50 ;
}                      }                         }