if语句被称为分支语句或选择语句,因为它相当于一个交叉点,程序要在两条分支中选择一条执行。if语句的通用形式如下:
if(expression)
statement
如果对expression求值为真(非0),则执行statement;否则,跳过statement。
if语句的结构和while语句很相似,他们的主要区别在于:如果满足条件可执行的话,if语句只能测试和执行一次,二while语句可以测试和执行很多次。
除了if语句还有if…else语句,if语句用于选择是否执行一个行为,if…else语句用于在两个行为之间选择。
在if语句和while语句中通常会使用关系表达式作为测试条件,有时候会把多个关系表达式组合起来使用,此时就需要用到逻辑运算符。有3种逻辑运算符,其分别是&&(与)、||(或)、!(非)。对于与运算,只有当运算符两侧的关系表达式都为真时,整个运算结果才为真;对于或运算,只有当运算符两侧的关系表达式都为假时,整个运算结果才为假。在这三个运算中,!运算符的优先级最高,&&运算符次之,||运算符优先级最低。
条件运算符?:可以作为表达if…else语句的一种便捷方式。该运算符分为两部分,需要3个运算对象,是C语言中唯一一个的三元运算符。条件表达式的通用形式如下:
expression1 ? expression2 :expression3
如果expression1为真(非0),那么整个表达式的值与expression2的值相同;如果expression1为假(0),那么整个条件表达式的值与expression3的值相同。
需要把两个值中的一个值赋给变量时,就可以用条件表达式。例,把两个值中最大值赋值给变量:
max = (a > b)?a:b; //如果a大于b,那么将max设置为a;否则,设置为b
一般而言,程序进入循环后,在下一次循环测试之前会执行完循环体中的所有语句。continue和break语句可以根据循环体中的测试结果来忽略一部分循环内容,甚至结束循环。
break语句可以用于循环和switch语句中,但是continue只能用于循环中。如果switch语句在一个循环中,continue便可作为switch语句的一个部分。在此情况下,就像其他循环中一样,continue让程序跳出循环剩余部分,包括switch语句的其他部分。
switch语句可以在一系列以整数作为标签的语句中进行选择。要对紧跟在关键字switch后圆括号中的表达式求值,如果紧跟在switch关键字后的测试条件的整数值与某标签匹配,程序就转至执行匹配的标签语句,然后在遇到break之前,继续执行标签语句后面的语句。如果没有break语句,就会从匹配标签开始执行到switch末尾。如下是switch语句的形式:
switch(expression)
{
case label1 : statement1 //使用break跳出switch
case label2 : statement2
default : statement3
}
注解:程序根据expression的值跳转至相应的case标签处。然后,执行剩下的所有语句,除非执行到break语句进行重定向。expression和case标签必须是整数值(包括char类型),标签必须是常亮或完全由常量组成的表达式,不能用变量作为case标签。如果没有case标签与expression的值匹配,控制则转至标有default的语句(如果有的话);否则,将转至执行紧跟在switch语句后面的语句。