运算符与表达式
一、表达式
1、是C语言的主体
2、由操作符和操作数组成
3、又有简单表达式(只有一个操作符)和复杂表达式(两个或两个以上操作符)
4、表达式放在赋值语句的右侧
#include<stdio.h>
int main()
{
int a,b,c; //声明变量 使用逗号分隔变量
a=10; //变量赋值
b=3;
c=a-b+1; //表达式
printf("c的值为:%d",c); //结果为 8 逗号分隔参数 逗号也可作为分割表达式
}
二、赋值运算符与赋值表达式
关于赋值这里容易理解,不用讲太多
1、变量赋初值
a、常数赋值给变量
语法:类型 变量名=常数;
int a=100;
b、赋值表达式为变量赋值
语法:类型 变量名=表达式;
int num=a+b*3;
2、自动类型转换
就是不同数值类型进行转换
例:单精度类型(float)转换为整数类型(int)
#include<stdio.h>
int main()
{
float a=100.1; //单精度类型
int i=a; //转换为整型
printf("%d",i); //结果为100
}
有些编译器遇到这种情况会发出警告
3、强制类型转换
对于发出警告的编译器可使用强制类型进行转换
#include<stdio.h>
int main()
{
char a; //字符型
short b; //短整型
int c; //整型
float d=70001; //单精度型
/*强制转换赋值*/
a=(char)d;
b=(short)d;
c=(int)d;
/*输出*/
printf("%c\n",a); //结果为 q
printf("%d\n",b); //结果为 4465
printf("%d",c); //结果为 70001
}
由高级别向低级别转换可能会出现数据丢失
三、算术运算符与算术表达式
1、算术运算符
它包括两个单目运算符(正和负)和五个双目运算符(加、减、乘、除、取模)
符号 | 功能 |
---|---|
+ | 单目正 |
- | 单目负 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模(两数相除得到的余数) |
2、算术表达式
我一百花完买辣条,求辣条单价(数量自取)
#include<stdio.h>
int main()
{
int a,b; //定义辣条的数量和单价
printf("请输入数量:");
scanf("%d",&a);
b=100/a;
printf("八包辣条需要:%d",b);
}
3、优先级和结合性
优先级就不多介绍
乘、除、取模的优先级大于加、减
优先级相同就“自左向右”运算
若先加减再乘除可以用括号()
4、自增 自减运算符
符号 | 说明 |
---|---|
++ a(- -a) | 先+(-)1再赋值 |
a++(- -a) | 先赋值再+(-)1 |
#include<stdio.h>
int main()
{
int a=2,b=2,c=2,d=2;
a=++a;
printf("++a的值:%d\n",a); //先+1再赋值
b=b++;
printf("++b的值:%d\n",b); //先赋值再加+1
c=--c;
printf("--c的值:%d\n",c); //先-1再赋值
d=d--;
printf("d--的值:%d\n",d); //先赋值再-1
}
四、关系运算符与关系表达式
1、关系运算符
符号 | 功能 |
---|---|
> | 大于 |
< | 小于 |
== | 等于 |
!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
2、关系表达式
在编程中对于两值的比较,返回的值为真值(true(1))或者假值(false(0))
表达式的值非零为真
零是假值
这里用到if语句,所以不多讲,后面会讲
五、逻辑运算符与逻辑表达式
1、逻辑运算符
符号 | 功能 |
---|---|
&& | 逻辑与 |
|| | 逻辑或 |
! | 单目逻辑非 |
逻辑与&&和逻辑或||都是双目运算符
2、逻辑表达式
a=b&&c; //b和c有一个假就为假
a=b||c; //b和c有一个为真就为真
a=!b; //b为真就是假 b为假就是真
a=!!b; //转换成逻辑值
#include<stdio.h>
int main()
{
int a=0,b=2; //a为假,b为真
printf("a&&b的真假:%d\n",a&&b); //逻辑与 结果为 0
printf("a||b的真假:%d\n",a||b); //逻辑非 结果为 1
printf("a&&b的真假:%d\n",!a&&b); //单目逻辑非 结果为 1
printf("!!a的真假:%d",!!a); //转换成逻辑值 结果为 0
}
六、位逻辑运算符与为逻辑表达式
位逻辑运算符可实现位的设置、清零取反和取补
位逻辑运算符号 | 说明 |
---|---|
& | 位逻辑与 |
| | 位逻辑或 |
^ | 位逻辑非 |
~ | 取补 |
七、逗号运算符和逗号表达式
C语言中可以用逗号将表达式分隔开
a:运算的优先级大于逗号
所以先计算a+b
b:若先算逗号,则使用括号
算出c-a
#include<stdio.h>
int main()
{
int a,b,c,num;
a=1;
b=2;
c=3;
num=0;
num=a+b,a+c,c-a;
printf("num的值为:%d\n",num); //结果为 3
num=(a+b,a+c,c-a);
printf("num的值为:%d\n",num); //结果为 2
}
八、复合赋值运算符
它就是一种表达式的缩写,让表达式更简单
num=num+1;
num+=1; //这是 num=num+1转变的
num=mum*a;
num*=a; //这是 num=mum*a转变的
十、实践与练习
1、使用复合运算符计算a+=a*=a/=a-6 (a为整数)
2、定义一个函数,赋值为10,依次按后缀自加——前缀自加——后缀自减——前缀自减,输出每次结果