C语言条件语句的介绍:if/else和switch
任何编程语言都为程序员提供了进行选择的能力。
我们想在某些情况下做X,而在其他情况下做Y。
我们想检查数据,并根据这些数据的状态进行选择。
C语言为我们提供了2种方法来做到这一点。
第一个是if 语句,以及它的else 帮助器,第二个是switch 语句。
if
在if 语句中,你可以检查一个条件是否为真,然后执行大括号中提供的块。
int a = 1;
if (a == 1) {
/* do something */
}
如果原来的条件是假的,你可以附加一个else 块来执行一个不同的块。
int a = 1;
if (a == 2) {
/* do something */
} else {
/* do something else */
}
注意一个常见的错误来源--在比较中总是使用比较运算符== ,而不是赋值运算符= ,否则if ,条件检查总是为真,除非参数是0 ,例如你这样做。
int a = 0;
if (a = 0) {
/* never invoked */
}
为什么会出现这种情况?因为条件检查会寻找一个布尔值的结果(比较的结果),而0 数字总是相当于一个假值。其他都是真的,包括负数。
你可以通过将多个if 语句堆叠在一起,拥有多个else 块。
int a = 1;
if (a == 2) {
/* do something */
} else if (a == 1) {
/* do something else */
} else {
/* do something else again */
}
switch
如果你需要做太多的if / else / if块来进行检查,也许是因为你需要检查一个变量的准确值,那么switch ,对你来说非常有用。
你可以提供一个变量作为条件,并为你期望的每个值提供一系列的case 入口。
int a = 1;
switch (a) {
case 0:
/* do something */
break;
case 1:
/* do something else */
break;
case 2:
/* do something else */
break;
}
我们需要在每个案例的结尾有一个break 关键字,以避免前一个案例结束后,下一个案例被执行。这种 "级联 "效应可以用一些创造性的方式来使用。
你可以在结尾处添加一个 "全面 "的案例,标记为default 。
int a = 1;
switch (a) {
case 0:
/* do something */
break;
case 1:
/* do something else */
break;
case 2:
/* do something else */
break;
default:
/* handle all the other cases */
break;
}