您的位置:首页 > 其它

选择结构

2014-07-19 11:29 211 查看
if语句

格式:

if ( expression)
program statement


如果expression为真,就执行program statement;如果expression为假,就忽略program statement。

if-else结构

格式:

if (expression)
program statement1
else
program statement2


如果expression为真,将执行program statement1,否则将执行program statement2.在任何情况下,都将会执行program statement1或者program statement2中的任意一个,而不是两个执执行。

符合条件测试

符合条件测试就是用逻辑与或者逻辑或运算符连接起来的一个或多个简单条件测试,这两个运算符分别使用字符对&&和||来表示。

在符合条件表达式中,使用圆括号可以增强表达式的可读性,避免由于错误假设表达式中的运算符优先级而陷入麻烦(与任何算术运算符或关系运算符相比,&&运算符有更低的优先级,但它的优先级比||运算符要高);在表达式中还应该使用空格,以加强可读性。

判断一年是否为闰年的代码:

if ( (year % 4 ==0 && year % 100 !=0)|| year % 400 ==0)


嵌套的if语句

例如:

if ([chessGame isOver]==NO)
if ([chessGame isOver]==YOU)
[chessGame yourMove];
else
[chessGame myMove];
else
[chessGame finish];


从上述例子中删除第一个else子句:

<span style="font-size:14px;">if ([chessGame isOver]==NO)
if ([chessGame isOver]==YOU)
[chessGame yourMove];
else
[chessGame finish];</span>

系统并不会以这种格式解释这条语句,而是使用以下形式解释这条语句:
if ([chessGame isOver]==NO)
if ([chessGame isOver]==YOU)
[chessGame yourMove];
else
[chessGame finish];

这是因为,else子句通常与最近的不包含else子句的if语句对应。可以用花括号强制表示不同关联,花括号具有隔离if语句的作用。
因此可以改为:

if ([chessGame isOver]==NO){
if ([chessGame isOver]==YOU)
[chessGame yourMove];

else
[chessGame finish];

else if语句

格式:

if (expression1)
program statement1
else if(expression2)
program statement2
else
program statement3
这种形式有效的扩展了if语句,使其从双值逻辑判定转换成3个值的逻辑判定。可以用刚才展示的方式继续向else语句添加if语句,以便有效的将这种选择扩展成n个值的逻辑判定。

例子:

scanf(“  %c”,&c);


在scanf的格式化字符%c前插入一个空格(如“   %c”),这会引起scanf“跳过”输入的空白字符(例如:换行,回车,制表符,换行符),省略空格会导致scanf读取的并不是你期望读取的字符。读入单个字符时都需要牢记这个用法。

switch语句
格式:

switch (expression)

case value1:
program statement
program statement
....
break;
case value2:
program statement
program statement
...
break;
case value3:
program statement
program statement
....
break;
default:
program statement
program statement
...
break;

括在圆括号中的expression与value1,value2.......valuen连续进行比较,后者必须是常量或常量表达式。

注意:每种情况的结尾都要包含break语句,如果忘记为特定的情况执行这项操作,只要执行这种情况,程序就会继续执行下一种情况。有时需要刻意这么做,如果选择这种方式,请插入注释,告知他人。

编写switch语句时,应该记住任何两种情况的值都不能相同。但是,可以将多个情况的与一组程序语句关联起来。简单地在要执行地普通语句之前列出多个情况的值(每个情况中值的前面都要使用case关键字,而且后面要有一个冒号)就能实现该任务。

例子:

switch (operator)
{
...
case '*':
case 'x':
[deskCalc multiply:value2];
break;
}

Boolean变量

通常,一个标记只接受两个不同值中的一个。

逻辑非(!)运算符,这种运算符的优先级和一元运算符相同,所有二元算术运算符和关系运算符的优先级都它高。

OC中有两个内置特性,可以使Bollean变量的使用更容易。一种是特殊类型BOOL,它可以声明值非真非假的变量。另一种是预定义的YES和NO。

条件运算符

格式:

condition ?expression 1:expression2


如果condition为true,将执行expression 1;如果condition为false,将执行expression2;

条件运算符的优先级非常低,它低于其他所有运算符的优先级,但赋值运算符和逗号运算符除外。条件运算符从右到左结合,这意味着单个表达式中可以使用多个运算符。例如:

e1 ?  e2 : e3 ? e4 : e5 中条件运算符从左到右结合,因此,用以下形式求值:

e1 ?  e2 :( e3 ? e4 : e5)

条件表达式并非在赋值运算符的右边,它可以在能使用表达式的任何位置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  选择结构