3.1.1 if语句
基本的if语句使程序在给定条件表达式的值为true时,执行一条语句或被大括号包围的语句块,或者当条件为false时跳过该语句或语句块。执行过程如图3-1所示。
下面是一个简单的if语句示例:
- if('A' == letter)
- cout << "The first capital, alphabetically speaking.";

被测试的条件在紧跟关键字if的圆括号中,其后是条件为true时要执行的语句。注意这里分号的位置,它位于if和圆括号内条件表达式后的那条语句之后,在圆括号包围的条件表达式后不应该有分号,因为实质上这两行共同构成了一条语句。我们还看到if后面的语句是缩进编排的,其作用是指出该语句仅当if条件返回true时才执行。缩进对程序执行而言不是必需的,但有助于读者了解if条件及依赖该条件的语句之间的关系。该代码段中的输出语句仅当变量letter的值为'A'时才执行。
当使用= =运算符比较某种类型的变量和常量时,最好将常量写在= = 运算符的左边,如'A' = = letter。这样,如果不小心写成'A' = letter,则编译器会给出错误消息。而如果写成letter = 'A' ,这是完全合法的,所以不会产生错误消息,尽管其实这并不是您的本来意思。
可以用下面的方法来扩展这个示例,即如果letter的值是'A',则改变该变量的值:
- if('A' == letter)
- {
- cout << "The first capital, alphabetically speaking.";
- letter = 'a';
- }
if语句控制的语句块由大括号包围,本例中仅当条件('A' == letter)为true时才执行块中的语句。如果没有大括号,则只有第一条语句从属于if,而给letter赋值'a'的语句将总是执行。注意,块中每条语句后面都有一个分号,但在块尾的大括号后面没有分号。块内可以有任意多条语句。现在,如果letter的值为'A',则输出与以前相同的消息之后,该变量的值将修改为'a'。如果条件表达式返回false,那么这两条语句都不会执行。