首先,我们通过一个小例子来了解一下 if 语句。
#include <stdio.h>
int main(void)
{
int num;
printf("Please input an integer: ");
scanf("%d", &num);
/* 如果 num 不等于零,则输出其值 */
if (num)
printf("Non-zero integer: %d\n", num);
printf("Thanks for using our product! (stdcpp.cn)\n");
return 0;
}
该程序读取用户输入的一个整数,然后使用 if 语句判断该整数是否为零,如果不为零,则输出该整数的值。也许您会对 if (num) 这一行感到不解,不明白它到底是什么意思。其实很简单,前面我们说过,C 语言中,零为假,非零为真。if 语句判断 num 的值是否为真,如果为真,则执行 printf("Non-zero integer: %d\n", num);;反之,则不执行。所以,只有当 num 不等于 0 时,才会输出 num 的值。
if 语句被称为分支语句(branching statement)或者选择语句(selection statement),其基本结构如下:
if ( condition )
一条语句/复合语句
如果 condition 为真,则执行“一条语句/复合语句”;反之,则跳过“一条语句/复合语句”。显而易见,if 语句的结构和 while 语句非常相似。和 while 语句一样,if 语句中的 condition 也可以是任何合法的表达式。它们主要的不同点在于,if 语句中的 condition 只会被检验一次,而 while 语句中的 condition 可能会被检验很多次;if 语句中的“一条语句/复合语句”最多只会被执行一次,而 while 语句中的“一条语句/复合语句”可能会被循环执行很多次。if 语句的执行流程如下图所示:

注意,if 语句的整个结构只算是一条语句,无论是否使用了复合语句,也无论复合语句中包含多少语句。也就是说,
if ( condition )
{
/*... ...*/
}
只算是一条语句。
参考资料:C Primer 5th Edition
C99 标准
本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。