目录
这是什么结构?
“树上有10只鸟,开枪打死一只,还剩几只?”
*如果挂在树枝上,则剩一只。如果掉下来,则一只也不剩。
*如果有关在笼子里的鸟,则……
*如果用的是无声手枪,则……
*如果树上有的鸟是聋子,则……
*如果一枪打死两只,则……
让计算机求解问题,必须考虑所有的“如果”
选择结构——分支结构(Selection Structurn)
*根据给定的判定条件,判断结果,并根据判断的结果来控制程序的流程
关系运算符与关系表达式

关系运算符的优先级和结合性
算术运算符 → 关系运算符

判断n是否是奇数 判断n是否是偶数
n%2 != 0 n%2 == 0
关系表达式的值
The value of a relational expression is a logical value:
true or false
There is no logic type in C,thus ,for a relational expression,
*true ←→1
*false←→0
判断表达式的真假
*非0←→true
*0←→false
问题:a > b >c表示“b在a和c之间”的意思吗?
NO NO NO
逻辑运算符和逻辑表达式
&& 与(AND):当且仅当两个操作数都为真“A并且B” 
|| 或(OR):两个操作数中只要有一个为真“或者A或者B” ![]()
! 非(NOT)

逻辑运算符的优先级和结合性
逻辑非 → 算术运算符 → 关系运算符 → 逻辑与 → 逻辑或
*逻辑非 ——右结合
*逻辑与,逻辑或——左结合
问题:如何表示“b在a和c之间”?
a > b && b > c
(a > b) && (b > c)
判断ch是大写英文字母
'Z' >= ch >='A' ?
(ch >= 'A') && (ch <= 'Z')
判断ch是数字字符
(ch >= '0') && (ch <= '9')
一位百岁老人一生只过了25个生日,是何原因呢?
判断某年year是闰年的条件是满足下列二者之一
*能被4整除,但不能被100整除
*能被400整除
如何表示“能被某数整除”?用什么运算?
year%4==0 && year%100!=0 || year%400==0
优先级: % ==(!=) && ||
((year%4==0)&&(year%100!=0))||(year%400==0)
逻辑运算符的短路特性
问题:用逻辑与&&或者逻辑或||连接的两个子表达式互换位置,对整个逻辑表达式的值有影响吗?
*若表达式的值可由先计算的左操作数的值单独推导出来,那么将不再计算右操作数的值
*“短路”特性
(a >= 1)&&(b++==5) (b++==5)&&(a >= 1)
→(0 >= 1)&&(b++==5) (b == 5)&&(a >= 1)
→ 0 &&(b++==5) b++
→ 0
a:0
b:5
短路特性有时也很有用
(i != 0)&&(j / i > 0)
——“短路”使得“除0”运算不会发生
良好的程序设计风格还是不建议在程序中使用多用途、复杂而晦涩难懂的复合表达式

1053

被折叠的 条评论
为什么被折叠?



