在日常生活中,基本可以分为三种结构体:顺序结构、选择结构、循环结构。C语言也是同样如此,可以通过if、switch语句进行实现。
一、if语句
if语句的执行流程图:
if语句的形式:
if(表达式)
语句
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。在C语句中,0表示假,非0表示真。也就是说,0的时候为假不执行,非0的时候为真语句执行。
else:
if(表达式)
语句1
else
语句2
e.g.
#include<stdio.h>
int main()
{
int i=0;
scanf("%d",&i);
if(i%2 == 0)
printf("奇数");
else
printf("偶数");
return 0;
}
默认在if和else中都只控制一条语句,当分⽀中包含多条语句时,第一条后面的语句无论是真是假都会执行。如果要if语句同时控制2条语句,那就要使⽤ else 后也可以跟上⼤括号。
在if else语句中,else可以与另⼀个if语句连⽤,构成多重判断。
e.g.
define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i = 0;
scanf("%d", &i);
if (i == 0)
printf("这个数是0");
else if (i > 0)
printf("这个数是正数");
else
printf("这个数是负数");
return 0;
}
悬空else
这就是悬空 else 的问题,如果有多个 的 if 和else匹配 ,可以记住这样⼀条规则,else总是跟最接近的if匹配。
二、关系操作符
C语⾔⽤于⽐较的表达式,称为“关系表达式”(relationalexpression),⾥⾯使⽤的运算符就称 为“关系运算符”(relationaloperator),主要有下⾯6个。
>:大于 <:小于 ==:判断相等 >=:大于等于 <=:小于等于 !=:判断不相等
⼀个需要避免的错误是:多个关系运算符不宜连⽤。
a<b<c。a < b 返回 0 或 1 ,所以最终是 0 或 1 与变量 k 进⾏⽐较。可以使用这种表达式:a<b&&b<c。
逻辑操作符
! :逻辑取反运算符(改变单个表达式的真假)。
&&:表示并且。
||:表示或者。
短路。
C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算称为短 路求值。