-
Notifications
You must be signed in to change notification settings - Fork 25
/
ch04s04.html
8 lines (8 loc) · 4.77 KB
/
ch04s04.html
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>4. switch语句</title><link rel="stylesheet" href="styles.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="Linux C编程一站式学习" /><link rel="up" href="ch04.html" title="第 4 章 分支语句" /><link rel="prev" href="ch04s03.html" title="3. 布尔代数" /><link rel="next" href="ch05.html" title="第 5 章 深入理解函数" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4. switch语句</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s03.html">上一页</a> </td><th width="60%" align="center">第 4 章 分支语句</th><td width="20%" align="right"> <a accesskey="n" href="ch05.html">下一页</a></td></tr></table><hr /></div><div class="sect1" lang="zh-cn" xml:lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2719538"></a>4. switch语句</h2></div></div></div><p><code class="literal">switch</code>语句可以产生具有多个分支的控制流程。它的格式是:</p><div class="literallayout"><p>switch (控制表达式) {<br />
case 常量表达式: 语句列表<br />
case 常量表达式: 语句列表<br />
...<br />
default: 语句列表<br />
}</p></div><p>例如以下程序根据传入的参数1~7分别打印Monday~Sunday:</p><div class="example"><a id="id2719574"></a><p class="title"><b>例 4.1. switch语句</b></p><div class="example-contents"><div><img src="images/cond.switch1.png" /></div></div></div><br class="example-break" /><p>如果传入的参数是2,则从<code class="literal">case 2</code>分支开始执行,先是打印相应的信息,然后遇到<code class="literal">break</code>语句,它的作用是跳出整个<code class="literal">switch</code>语句块。C语言规定各<code class="literal">case</code>分支的常量表达式必须互不相同,如果控制表达式不等于任何一个常量表达式,则从<code class="literal">default</code>分支开始执行,通常把<code class="literal">default</code>分支写在最后,但不是必须的。使用<code class="literal">switch</code>语句要注意几点:</p><div class="orderedlist"><ol type="1"><li><p><code class="literal">case</code>后面跟表达式的必须是常量表达式,这个值和全局变量的初始值一样必须在编译时计算出来。</p></li><li><p><a class="xref" href="ch04s02.html#cond.ifelse">第 2 节 “if/else语句”</a>讲过浮点型不适合做精确比较,所以C语言规定<code class="literal">case</code>后面跟的必须是整型常量表达式。</p></li><li><p>进入<code class="literal">case</code>后如果没有遇到<code class="literal">break</code>语句就会一直往下执行,后面其它<code class="literal">case</code>或<code class="literal">default</code>分支的语句也会被执行到,直到遇到<code class="literal">break</code>,或者执行到整个<code class="literal">switch</code>语句块的末尾。通常每个<code class="literal">case</code>后面都要加上<code class="literal">break</code>语句,但有时会故意不加<code class="literal">break</code>来利用这个特性,例如:</p><div class="example"><a id="id2719735"></a><p class="title"><b>例 4.2. 缺break的switch语句</b></p><div class="example-contents"><div><img src="images/cond.switch2.png" /></div></div></div><br class="example-break" /></li></ol></div><p><code class="literal">switch</code>语句不是必不可缺的,显然可以用一组<code class="literal">if ... else if ... else if ... else ...</code>代替,但是一方面用<code class="literal">switch</code>语句会使代码更清晰,另一方面,有时候编译器会对<code class="literal">switch</code>语句进行整体优化,使它比等价的<code class="literal">if/else</code>语句所生成的指令效率更高。</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s03.html">上一页</a> </td><td width="20%" align="center"><a accesskey="u" href="ch04.html">上一级</a></td><td width="40%" align="right"> <a accesskey="n" href="ch05.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top">3. 布尔代数 </td><td width="20%" align="center"><a accesskey="h" href="index.html">起始页</a></td><td width="40%" align="right" valign="top"> 第 5 章 深入理解函数</td></tr></table></div></body></html>