运算符和控制语句
一、知识点
表达式
用运算符和括号将操作数连接起来的、符合C语言语法规则的式子,称为表达式。运算符和操作数的有效组合。
表达式的分类
- 算术表达式:加减乘除求余
- 关系表达式:大于小于等于
- 逻辑表达式:与或非
- 函数表达式
运算符的分类
赋值运算符
所有赋值运算符的优先级相同,始终从右向左进行计算。形式:变量名=表达式。‘=’左边不能是表达式
算术运算符
- ++i,++在前,先自加,后参与运算。i++,++在后,先参与运算,后自加。
- 除号/的两侧如果是整数,结果也是整数,例如:22/5=4.
- %两侧的操作数只能是整数
- 幂函数pow(double,double),pow(2.0,3.0)结果为8.0
int a=10;
int i=5;
printf("a=%d\n",a++); //++在后,先参与运算,后自加
printf("a=%d\n",++a); //++在前,先自加,后参与运
printf("%.3lf\n",8/3.0); // 除号/的两侧如果是整数,结果也是整数
printf("%d\n",5%3); // %两侧的操作数只能是整数
printf("%d\n",++i%7); //先++再求余
printf("%d\n",i); //6
printf("%d\n",(i++)+(i++)); // 先6+6=12,后i=6+1=7,i=7+1=8
printf("%d\n",i); //8
关系运算符
逻辑运算符
- ! 逻辑非,运算量为真时,运算结果为假,运算量为假时,运算结果为真。
- && 逻辑与,当且仅当两个运算量为真时,运算结果为真,否则为假。
- || 逻辑或,当且仅当两个运算量都为假时,运算结果为假,否则为真。
- 逻辑与和逻辑或的短路情况:
逻辑与:左边的表达式结果为假时,右边的表达式不运算,逻辑表达式结果直接为假。
逻辑或:左边的表达式结果为真时,右边的表达式不运算,逻辑表达式结果直接为真。
位运算符
运算符 | 描述 |
---|---|
位与(x&y) | 如果两个操作数的相应位都为1,则该位结果为1 |
位或(x l y) | 如果两个操作数的相应位有一个为1,则该位结果为1 |
位取反(~x) | 操作数按位取反 |
位异或(x^y) | 如果两个操作数的相应位同号,结果为0,异号结果为1 |
运算符优先级
类型转换
在赋值表达式中,自动将赋值运算符右边表达式的值的类型转换成左边变量的类型
低级别:char > short > int(long) >unsigned int > float > double(long double) 高级别
强制类型转换:(type)cast
float x,f
f=3.14159;
x=(int)f;
//运算后x=3.000 f本身的值不变
(double) 8/3;结果为2.6667
控制语句
if语句
//单分子,表达式结果为1,则执行语句,否则跳过执行下一条
if(表达式) //也可以是变量
{
语句;
}
//双分子,若表达式结果为1,执行语句1,否则执行语句2
if(表达式)
{
语句1;
}
else
{
语句2;
}
//多分子,else与距离他最近的if语句嵌套
if(表达式)
{
语句1;
}
else if
{
语句2;
}
else
{
语句3;
}
switch语句
将表达式的值与case的值比较,与常量匹配,则执行相应的语句;不匹配则执行default后的语句。break可以省略,但语句会一直运行,直到遇到break时结束switch语句
switch(表达式) //表达式只能是整数或者字符常量
{
case 常量1:
语句集;
break;
case 常量2:
语句集;
break;
case 常量3:
语句集;
break;
.....
default:
语句集;
break;
}
二、没有听懂或者没有理解的地方
无
三、当天学习的收获
- 编程时需要考虑特殊情况
- 随机数生成函数
#include<time.h>
int com()
{
int res=0;
srand(time(NULL));
res=rand()%3+1+48;
return res;
}
四、作业的思路、不会的地方及原因
石头剪刀布游戏:用字符‘1’‘2’‘3’分别表示石头剪刀布,然后将玩家的选择与电脑随机产生的数和字符‘1’‘2’‘3’一一匹配,将两者的字符相减,观察结果并与输赢一一对应。
五、其他需要反馈的问题
无
六、心得体会
运算符的优先级和类型转换还不熟悉,要多看多记。