一、算术运算
二、关系运算
> >= < <= == !=
> >= < <= == !=
1>2 //有值 --- 值? --真1 假0 ---逻辑结果 --布尔值 (bool)
// false
// true
//
练习:
2==3 > 3==4 //结果? //注意运算符优先级
( 2==(3 > 3) )==4
(0)==4
总结:
1.关系运算的结果 只有 0 或 1 ,这个结果 用int型来存储的
三、逻辑运算
&& 规则: 一假则假
|| 规则: 一真则真
! 规则: 真假相对
逻辑运算 实际是 表示 表达式之间的关系
表达式1 && 表达式2
补充:注意:
&& 截断特性(短路特性) //逻辑运算中-优先算左边的表达式
|| 也有截断特性
result = 1>2 && a++
result = ((1>2) && (a++))
( 0 && 10 )
( 0 && 1 ) //0
a = 11
5.2 C 语言中如何表示"真"和"假"?
1-真
0-假
系统如何判断一个量的"真"和"假"?
非0 即为真
2 //真
-1 //真
'a' //真
0 为假
练习:
5.3 写出下面各逻辑表达式的值。设a=3, b=4·,c=5 。
(1) a+b>c && b==c //0
(2) a|| b+c && b—c //1
(3) !(a>b) && !c || 1 //1
(4) !(x=a) && (y=b) && 0 //0
(5) !(a+ b) +c—1 && b+c/2 //1
四、if 语句
//形式1
语法:
...
if (表达式)
{
语句
} //复合语句
...
语义:
如果 表达式 为真
则 执行 if 下的 语句 ,语句执行完后,继续执行if后的代码
如果 表达式 为假
则 跳过 if 下的 语句,执行if语句后面的代码
注意:
1.if 后面 没有 分号
//形式2 --双分支
...
if ( 表达式)
{
语句1
}
else
{
语句2
}
....
语义:
判断 表达式?
真
执行语句1
假
执行语句2
执行完后,继续if后面的代码执行
//形式3
if( 表达式1)
语句1
else if( 表达式2)
语句2
else if( 表达式3)
语句3
else if( 表达式m)
语句m
else
语句n
语义:
判断 表达式1
真
执行 语句1
语句1 执行完成就表示if执行完了,程序继续往后
假
判断表达式2
真
执行 语句2
语句2 执行完成就表示if执行完了,程序继续往后
假
判断表达式3
真
执行 语句3
语句3 执行完成就表示if执行完了,程序继续往后
假
....
注意:
每个判断的if后面不要写分号
对齐:
单独一行
==
多行
shift + v选中多行
按一下 =
全局对齐
gg=G (shift+g)
问题:
0.没有单独的else语句,所以else出现必然有其对应if与之配对
1.if - else 配对关系
可以先从最里面的else寻找
找距离else最近的if (在else之前)
3.if的嵌套
if (1)
{
if (2)
{
}
}
if ()
if()
else
...
else
if()
else
...
switch 语句
语法格式:
switch (整型表达式)
{
case 常量表达式1:
语句1
break;
case 常量表达式2:
语句2
break;
case 常量表达式D:
语句n
break;
default :
语句n+l
break;
}//右花括号
语义:
首先,求解"表达式"
根据表达式的结果 ,
到下面case后依次进行匹配,
如果与case 后的常量表达式的值一致,
则匹配成功,
执行该case下面的"语句"
直到遇到了 break
或 switch 的右花括号 }
注意:
1.switch后 "表达式" ---结果不能是 浮点型
2.case 后面 是常量表达式,不能出现变量
3.default 写错 没有语法问题,但是达不到程序效果