目录
c语言流程控制
- 顺序结构
- 选择结构(分支结构)
- 循环结构
任何一个程序都是由这三种结构组合而成。
通过比较提供判断的依据,进行选择。c语言通过关系运算和逻辑运算构造选择判断的条件。
关系运算符
逻辑运算符
&&逻辑与
一假则假
||逻辑或
一真则真
&&和||都有短路特性(截断特性),先计算左边的表达式
表达式1&&表达式2
只有表达式1为真时,才需要继续判别表达式2的值
表达式1 || 表达式2
只有表达式1为假时,才需要继续判别表达式2的值
例子代码如下:
int a = 1;
int b = 0;
b = a++ && a > 0;
printf("a = %d b = %d\n",a,b);//a = 2 b = 1
b = a < 0 && ++a;
printf("a = %d b = %d\n",a,b);//a = 1 b = 0
b = a < 0 || ++a;
printf("a = %d b = %d\n",a,b);//a = 2 b = 1
b = a > 0 || ++a;
printf("a = %d b = %d\n",a,b);//a = 1 b = 1
判断闰年
考虑普通闰年和世纪闰年。
(year % 4 == 0 && year % 100 != 0) || year % 400 == 0
仅仅用year % 4 == 0判断是不对的,
忽略了对世纪年的特殊处理。
这个条件仅判断一个年份能否被4整除。虽然大部分闰年都能被4整除,但这个条件并不够准确,因为它忽略了能被100整除但不能被400整除的年份(例如:1900年不是闰年,但可以被4整除)。
!逻辑非
真假相对、取反
优先级:!——>&&——>||
逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起来的式子。逻辑表达式的结果要么"真",要么"假"。
c语言中如何表示"真"和"假"
整型1——真、整型0——假
系统如何判断一个量的"真"和"假"
规定:
0为假
从数值角度看,其值为0
0,'\0',NULL(空指针——编号0地址)都为假
非0就是真
从数值角度看,其值不为0
1、2、3...-1、-2....'a'、'b'等都为真
C语言中通过关系运算和逻辑运算构造选择判断的条件
选择语句
if语句
形式1
处理单个情况、单分支
语法形式:
if(表达式)
{
语句
}//复合语句
语义:如果,表达式为真——执行语句——语句执行完——if语句结束——程序继续往下
如果,表达式为假——if语句结束——程序继续往下
形式2
处理两种情况、双分支
语法形式:
if(表达式)
{
语句1
}
else
{
语句2
}
语义:如果,表达式为真——执行语句1——语句1执行结束——表示if语句结束——程序继续往下
表达式为假——执行语句2——语句2执行结束——表示if语句结束——程序继续往下
形式3
处理多种情况、多分支
语法形式
if(表达式1)
{
语句1
}
else if(表达式2)
{
语句2
}
else if(表达式3)
{
语句3
}
.
.
.
else if(表达式m)
{
语句m
}
else
{
语句n
}
条件运算
表达式1?表达式2:表达式3
这是唯一的三目运算符。条件运算实际上就是if-else简写
语义:
判断表达式1
——真:执行表达式2
——假:执行表达式3
switch语句
语法形式
switch(表达式)
{
case 常量表达式1:
语句1
break;
case 常量表达式2:
语句2
break;
.
.
.
case 常量表达式n:
语句n
break;
default:
语句n+1;
break;
}
语义:
求解表达式,用表达式结果与下面case后的常量表达式的结果进行匹配,匹配成功则执行对应case下的语句,直到遇到break或者switch语句 '}' (右花括号)则结束。
注意:
switch后面表达式,必须是一个整型表达式(不能是浮点型)
case后面是一个整型常量表达式(不能出现变量)
label标签:可以给执行语句起一个标签,标签来代表这句话
default不一定写在最后,看需求放在哪里都可以,但是default最好也写上break
标签:语句,...,逻辑,逻辑运算,嵌入式,运算符,&&,break,表达式 From: https://blog.csdn.net/weixin_62409078/article/details/140731438