定义:从main()开始,由上往下有些语句执行有些不执行
两类语句→执行语句:控制语句
不标定义语句,直接标执行语句
找配对,找控制,标语句
两类表达式
- 关系运算符及关系表达式 {结果是逻辑值,即不是0(假)就是1(真)}
< <= > >= (6级,从左往右)
= = != (7级,从左往右)
- 运算符与逻辑表达式{结果是逻辑值,即不是0(假)就是1(真)}
- && (11级(从左往右) 一假则假
&&的短路:第一个操作数的逻辑值为0则直接输出结果为0(后续操作数不会再计算了)
- || (12级 ,从左往右) 一真则真
||的短路:第一个操作数的逻辑值为1则直接输出结果为1(后续操作数不会再计算了)
-
!(单目)(2级,从右往左) 非真即假
-
三要素:功能、优先级、结合性
2级的都是单目,单目的都是从右往左
3-12级都是双目,双目的都是从左往右
- 表达式计算步骤
- 先看表达式合不合法
- 然后看有没有短路
- 计算优先级高的,同级情况下再看结合性
if 语句(三种格式)
格式1:if语句
if(表达式)
{
语句序列;
}
格式2:if else语句
if(表达式)
{
语句序列;
}else
{
语句序列;
}
注意:
- 一个else都要和一个if配对
- 如果 则if不加 {},那么只控制下面的第一句话;else不加 {},那么只控制下面的第一句话。
- 如果if没有加 {},并且和else中间不止有一句话,那么程序就会报错:else无法找到与之匹配的if
- 复合语句 { }算一条语句
格式3:if的嵌套
- 形式一
if(表达式)
{
if(表达式)
{
语句序列;
}else
{
语句序列;
}
}else
{
语句序列;
}
else总是在它上面、离它最近的、未与其他else配对的那个if配对
- 形式二:多选一
if(条件)
{
代码块;
}
else if(条件)
{ 代码块;
}
else
{
代码块 ;
}
注意:
不能随便加分号,不能将结构分离
else跟同层的,上边最近的else if匹配
- 嵌套
对比多个if并列的写法
switch语句
switch(整型表达式)//实现判断
{
语句项;
}
//句项是什么呢?
//是一些case语句:case语句实现选择
//如下:
case 整形常量表达式:
语句;
//在switch语句中的 break
case 整形常量表达式:
语句;
break;
default可有可无,建议有
- 执行过程:
表达式里的值和case后面的常量表达式的值进行匹配:
如果匹配成功就会执行该case之后的子句以及该case下面所有的case的子句;
若表达式里的值和case后面的常量表达式的值都不匹配,才会执行default后面的子句(没有的话直接跳出)
若default下面还有case语句,则依然会执行 ;
若default在最 上面,并不会先执行default的,还是依旧先寻找与表达式值相匹配的常量表达式的值,如果找不到,就会执行default语句,然后再执行下面所有的case语句(除非遇到break)
注意:
- switch后面的表达式必须是个值,要和下面case后的相互匹配
- switch后必须用小括号将表达式括起
- case后常量整型或字符型,不能有变量和逗号运算符
- 各case后常量不能出现相同的值
- case和default 只是一个入口标号,不起中断作用。它们的顺序可以任意颠倒
- case 和default必须出现在switch语句中
- char类型数据输入的时候系统会自动给你加上’'的,比如你输入a,系统识别为‘a’