C Primer Plus(七)
第七章 C控制语句:分支和跳转
7.1 if语句
if语句被称为分支语句或选择语句,因为它提供了一个交汇点,在此处程序需要选择两条分支中的一条前进。一般的形式如下
if(expression)
statement
如果expression为真,则执行statement,否则跳过。
if else语句的通用形式为:
if(expression)
statement1
else
statement2
如果expression为真,则执行statement1,否则执行statement2。
如果希望在if和else之间有多条语句,必须使用花括号创建一个代码块。
7.1.1 geichar()和putchar()
getchar()函数没有参数,它返回来自输入设备的下一个字符。ch=getchar()与scanf("%c",&ch)有相同的效果。
putchar()函数打印它的参数,putchar()与printf("%c",ch)有同样的效果。
因为这些函数仅仅处理字符,所以它们比更通用的scanf()和printf()函数更快而且更简洁。同样它们不需要格式说明符,它们只对字符起作用。
7.1.2 else
规则是如果没有花括号指明,else和它最接近的一个if相匹配。
7.2 获得逻辑性
!运算符的优先级很高。它高于乘法运算,和增量运算符的优先级相同,仅次于圆括号。&&运算符的优先级高于||,这二者的优先级都低于关系运算而高于赋值运算。
C保证逻辑表达式是从左至右求值的。&&和||运算符是序列的分界点。
&&逻辑符中,仅当左边正确,才计算右边。
7.3 条件运算符?
条件运算符是C的三元运算符的惟一的一个例子。
下面是条件表达表达式的一般形式:
expression1?expression2:expression3;
如果expression1为真,整个条件表达式的值和expression2相同,否则整个条件表达式的值和expression3相同。
7.4 循环辅助手段:continue和break
7.4.1 continue语句
该语句可以用于三种循环形式。当运行到该句时,它将导致剩余的迭代部分被忽略,开始下一次迭代。
continue的另一个用处是作为占位符。例如
while(getchar()!='\n')
continue;
7.4.2 break语句
循环中的break语句导致程序终止包含它的循环,并进行程序的下一个阶段。
如果break语句位于嵌套循环里,它只影响包含它的最里层的循环。
break语句用于循环和switch中,而continue仅用于循环。
7.5 多重选择:switch和break
switch中可以对一个给定的语句使用多重case标签。
程序控制按照expression的值跳转到相应的case标签处,然后程序流程继续通过所有剩余的语句,直到再次由break语句重定向。
expression和case标签必须都是整型值(包括类型char),并且标签必须是常量或者完全由常量组成的表达式。
如果没有与表达式值相匹配的case标签,那么控制定位到标签为default的语句。
7.6 goto语句
goto语句包括两个部分:goto和一个标签名称。
格式:
goto label;
.
.
label:statement
如果不熟悉goto,不要使用它;如果已经习惯于使用它,试着训练自己不使用。