一、运算符和表达式(掌握)
1、定义
运算符:用于执行程序代码的运算,针对一个以上的操作数项目来进行运算。
+、-、*、/、%、&&
表达式:由数字、变量、算符、数字分组符号(括号等)等能够求得数值的有意义的组合。
(a+b)*5
2、赋值运算符 =
将=右边的值赋值给左边的变量
8=5;//错误
赋值表达式:由操作数和赋值运算符构成的表达式
本质:修改指定名称的存储空间的内容
【注意】整个赋值表达式的值,就是最终赋值给的那个变量的值
3、算术运算符
+ - * /
% 求余/取模
++:自增运算符,变量++或++变量,前者先用后加,后者先加后用
- - :自减运算符,变量- -或- -变量,前者先用后减,后者先减后用
算术表达式:由操作数和算术运算符构成的表达式
【注意】算术表达式是有确定的值
练习:定义一个整型变量num,对其进行初始化,计算出该数的个位数,将结果保存在ret整型变量中,然后输出ret的值,要求num初始化之后,使用scanf为其赋值。
3456 %10 = 6
【扩展】
【隐式类型转换】
相同类型的数据之间进行运算,表达式的值的类型不变。
int a=5,b=3;
int c = a-b;
不同类型的数据之间进行运算,会出现隐式类型转换。
1.0/2
【强制类型转换】
格式:(类型)表达式
【注意】强制类型转换,只是临时改变表达式中变量的类型,表达式中变量的类型没有被改变。
4、复合运算符(算术运算符和赋值运算符的结合)
+= -= *= /= %=
5、关系运算符
> < >= <= == !=
关系表达式:由关系运算符和操作数组成的表达式。
a>b;
a = 5;
b = 3;
关系表达式的值:
符合数学逻辑:1(真)
不符合数学逻辑: 0(假)
6、逻辑运算符
逻辑与(两边的表达式同时为真,值就为真),表达式1&&表达式2
逻辑或(两边的表达式有一个为真,值就为真),表达式1||表达式2
逻辑非 (表达式为真,值就为假,反之,值为真) !表达式
逻辑表达式:由逻辑运算符和表达式构成的表达式。
逻辑表达式的值:
成立为1(真)
不成立为0(假)
7、条件运算符(三目运算符)
格式:表达式1?表达式2:表达式3 条件表达式
执行过程:求解表达式1的值,如果表达式1的值为真,则
返回表达式2的值,作为整个条件表达式的值;否则将表达式3的值,作为整个条件表达式的值。
练习:
1、使用条件表达式,输入两个整数,找出最小值,并输出最小值。
2、使用条件表达式,输入两个整数,找出最大值,将最大值乘以4,并输出。
8、逗号运算符和逗号表达式(了解)
表达式1,表达式2,...,表达式n 逗号表达式
执行过程:从左往右依次执行每个表达式,逗号总表达式的值是表达式n的值。
9运算符优先级和结合性
赋值运算符是从右向左结合。
(1)当表达式比较复杂的时候,C语言没有规定计算的先后顺序,这个顺序取决于运算符的优先级。
(2)当记不住优先级和结合性,添加括号来解决。
二、分支结构(掌握)
顺序结构:自上而下,依次执行。
分支结构:执行是依据一定的条件,根据条件选择执行的路径,不按照原有的顺序来执行。
1、if语句
(1)if(表达式)
{
语句块1;
}
语句块2;
如果表达式的值为真,则执行语句块1,否则,不执行语句块1,继续执行语句块2。
练习:使用if语句求两个数之中的最大值。
(2)if(表达式)
{
语句块1;
}
else
{
语句块2;
}
如果表达式的值为真,则执行语句块1,否则执行语句块2。
(3)if(表达式1)
{
语句块1;
}
else if(表达式2)
{
语句块2;
}
…
else if(表达式n-1)
{
语句块n-1;
}
else
{
语句块n;
}
执行过程:依次判断每个表达式的值,当出现某个表达式的值为真的时候,则执行其对应的语句块。然后跳到整个if语句之外继续执行。如果所有表达式的值为假时,执行语句块n。
练习:输入一个字符,判断字符的类型:大写字母,小写字母,数字,其他字符