C语言 第二章-三种控制结构
本文将介绍顺序结构、选择结构和循环结构的运算符、表达式及控制语句。
一、顺序结构
1.算术
(1) 加 +
两数相加
(2) 减 -
两数相减
(3) 乘 *
两数相乘
(4) 除 /
两数相除
整数 / 整数 ,结果会舍去小数部分。例如 5 / 3 的结果为 1 。
但若两数其中有一个是负值,则可能向上取舍也可能向下取舍。
(5) 余 %
求余数
要求两个数都必须为整数
(6) ++i 和 i++
++i 是先自增1,再运算;
i++ 是先运算,再自增1。
假设 i = 5 ,
++i 的值为6 运算后 i=6
i++ 的值为5 运算后 i=6
(7) 优先级和结合性
优先级:乘除余大于加减
结合性:左结合,即自左向右运算
2.赋值
(1) 赋值运算符 =
将右边的值赋给左边的变量。
(2) 复合的赋值运算符
1 |
|
(3) 结合性
右结合,即自右向左运算 。
(4) 连续赋值
1 |
|
赋值运算为右结合,先计算 c=1
。 c=1
会将 1 赋给 c ,并且 c=1
的值也等于 1 。之后继续计算 b=1
、 a=1
,从而使 a、b、c 三个变量的值都为 1 。
正确写法:
1
2
3
int a,b,c;
a=b=c=1;错误写法:
1
int a=b=c=1;
(5) 赋值中的类型转换
浮点数赋给整型变量时,舍弃小数部分。
整数赋给浮点型变量时,整数先转换为浮点数形式,再存入。
占用字节多的整数赋给占用字节少的整型变量时,将低字节赋给变量并舍弃其它部分(截断)。
1
2
3int i = 289;
char c;
c = i;此时 i = 33 ,原因如下:
i —- 00000001 00100001 —- 289
仅将低字节部分赋给 c ,其它部分被舍弃。
c —- 00100001 —- 33
二、选择结构
1.关系
优先级:非 > 算术【乘除余>加减】> 关系【大于= 小于 > 等于 = 不等于】> 与和或 > 赋值
注意:
1
3 < num < 4
应写成
1
3 < num && num <4
2.逻辑
运算符 | 含义 | 举例 | 说明 |
---|---|---|---|
&& | 与 | a&&b | 仅当a,b同时为真时,结果为真 |
|| | 或 | a||b | a,b有一个为真,则结果为真 |
! | 非 | !a | 若a真,则结果为假;若a假,则结果为真 |
a&&b:当 a 为假时,表达式一定为假,不再判断 b
a||b:当 a 为真时,表达式一定为真,不再判断 b
3.条件
1 |
|
若表达式1为真,则执行表达式2,且整个条件表达式的值为表达式2的值;
若表达式1为假,则执行表达式3,且整个条件表达式的值为表达式3的值。
4.if
1 |
|
else 总是与最近的 if 配对(除非在不同的代码块内)
5.switch
1 |
|
先计算表达式的结果(表达式结果只能是整数)
假设结果为 n,则执行 case n: 之后的语句
若结果没有对应语句,则执行 default: 之后的语句
case n: 仅起指示作用而不起分隔作用,若没有 break ,则会从 case n: 之后一直执行到 switch 结束
三、循环结构
1.while
1 |
|
当循环条件为 真 时,执行循环体,继续判断循环条件;当循环条件为 假 时,停止循环。
- 循环体应该能使循环条件发生改变,否则就会死循环
- 条件为假时,一次都不执行
2.do while
1 |
|
先执行一次循环体;判断循环条件,为 真 时执行循环体,继续判断循环条件;为 假 时停止循环。
- 循环体应该能使循环条件发生改变,否则就会死循环
- 至少执行一次代码块
3.for
(1) 语法
1 |
|
- 先执行初始语句,初始语句会且仅会被执行一次
- 判断循环条件,
- 当循环条件为 真 时,执行循环体,执行末尾循环体,继续判断循环条件
- 判断循环条件,当循环条件为 假 时,停止循环
(2) 初始语句
一般用于为条件变量赋初值
可省略
1
for ( ; i < n; i++)
可包含多个表达式,表达式之间用逗号隔开
1
for (i = 0, j = 0;i < n; i++)
可定义变量,C99 允许在初始语句中定义局部变量
1
for (int i = 0; i < n; i++)
(3) 循环条件
循环条件可省略,但不应死循环
例如:
1
2
3
for (i = 0; ; i++){
if(i > n) break;
}
(4) 末尾循环体
一般用于改变条件变量。
可省略,或移动至循环体末尾
1
2
3
4for (i = 0; i < n; ){
循环体;
i++;
}可包含多个表达式,表达式之间用逗号间隔
1
for (i = 0; i < n; i++, j++)
4.break
用于跳出循环,即跳出整个循环,并继续执行循环之后的语句。
5.continue
用于结束本轮循环,(若是 for 循环,仍会执行末尾循环体),继续执行下一轮循环。
多层嵌套循环时, break 和 continue 只对一层有效
参考
- C程序设计
- C Primer Plus
- C 语言教程 | 菜鸟教程