一、如何产生条件
1.关系运算符(做大小判断)
< , <= , > , >= , == , !=
结果:关系是否成立。(成立:真(1),不成立:假(0)再次印证表达式都是有类型的也是有值的)
2.逻辑运算符
与:&& 一假则假
或:|| 一真则真
非:! 真假相对
在系统中如何判断真假呢?
0为假,非0为真。
注意:(1)从左边开始算
(2)存在短路特性(提高运算效率)即在&&中左边为假时右边可以直接不算直接得结果,||中左边为真时右边可以不算直接为真。
eg:
二、选择结构
1.if语句
(1)单分支
语法:if (表达式)
{
语句;
}
语义:先判断表达式,若为真则执行 if下的语句执行完,程序继续往下,若为假则表示if语句结束程序继续往下
(2)多分支
语法:if (表达式)
{
语句;
}else
{
语句;
}
语义:先判断表达式,若为真则执行语句1,执行完,程序继续往下,若为假则执行语句2,执行完,程序继续往下
(3)阶梯分支
语法:if(表达式1) //没有分号
{
语句1
}else if(表达式2) //没有分号
{
语句2
}else if(表达式3)
{
语句3
}else if(表达式m)
{
语句m
}else
{
语句n
}
语义:首先判断表达式1,若为真则执行语句1,执行完,程序继续往下,若为假则继续判断表达式2,若表达式2为真则执行语句2,执行完,程序继续往下 ,若为假则继续判断表达式3,表达式3为真则执行语句3,执行完,程序继续往下若为假则继续判断表达式m,若表达式m为真则执行 语句m,执行完,程序继续往下若为假 ,执行 语句n, 执行完,程序继续往下。
注意: 1. if 后面 没有分号
2. else 后面如果需要继续判断 有if
3. 单个if语句,没有单独的else语句, else 一定和一个if对应
if (表达式)
{
语句
}
4.if 和 else 配对关系:else 和离他最近的前面的if配对 (一般从最里面 往外面看)
5.判断 多分支的判断 --- 问题必须是同一个问题下的多种情况
三、分支结构
1.三目运算符
表达式1?表达式2:表达式3;
其执行逻辑相当于if-else语句,即表达式1为真时执行表达式2,表达式1为假时执行表达式3。
2.switch语句
Switch (表达式)
{
case 常量表达式1:语句;break;
case 常量表达式2:语句;break;
... ...
default :语句;break;
}
语法:首先求解表达式,得到结果后,用结果和 case 后面的常量结果做匹配 (看是否相等),匹配之后,则执行 该 case 下的语句直到 遇到了 break 或 switch 语句的 右} (花括号)结束。
注意: 1.表达式 必须是 整型表达式
2.break 不是强制要有的,但是一般使用时都有
3.case 后面必须是一个常量表达式 ,否则会出现以下错误
switch.c:15:2: error: case label does not reduce to an integer constant
case a+1:
^~~~
4.case :这些都是标签,标签 相当于给一句话 起的名字
5.default 位置 ,可以在前面或者后面,default 建议也把break加上
四、循环结构
1.构造循环的4个要素:
(1)初始条件
(2)结束条件
(3)循环体
(4)使循环趋于结束的语句(操作)
2.goto 语句标号;
语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和下划线组成, 其第一个字符必须为字母或下划线。不能用整数来作标号。
语句标号用标识符表示,它的定名规则与变扯名相同,即由字母、数字和下划线组成, 其第一个字符必须为字母或下划线。不能用整数来作标号。结构化程序设计方法主张限制使用 goto语句,因为滥用 goto 语句将使程 序流程无规律、可读性差。
3.for
for (表达式1;表达式2;表达式3)
{
语句;
}
求解表达式1,判断表达式2,2为假时for语句结束,为真这执行for语句并执行表达式3,然后继续判断表达式2... ...
4.while
语法:
while (表达式)
{
语句
}
语义:首先判断表达式,若为真则执行语句,继续判断表达式直到表达式为假while语句结束 。
5.do-while 语句:
语法:
do
{
循环体语句
}while(表达式);
语义:先执行循环体语句再判断表达式若表达式为真则继续执行循环体语句,再判断 表达式,重复这个过程直到表达式为假,为假时do-while 语句结束程序继续往下。
注意:while和都while执行逻辑不同
while --- 先判断 后执行
do-while --- 先执行 后判断 do-while 的循环体至少会被执行一次
6.总结
for和while完全可以通用,while和do-while大部分时间可以通用,但是do-while是先执行一次在判断。
7.break和continue
(1)break是跳出本层循环。
(2)continue是跳出本次循环。
注意:goto和if构成的循环不能用break和continue控制。