3 运算符与表达式
3.1 常用运算符分类
运算符类型
算术运算符 用于处理四则运算
赋值运算符 用于将表达式的值赋给变量
比较运算符 用于表达式的比较,并返回一个真值或假值
逻辑运算符 用于分局表达式的值返回真值或假值
位运算符 用于处理数据的运算符
sizeof运算符 用于求字节长度
3.2 算术运算符
0不能作为除数,%取余只能对整型操作
#include<stdio.h>
int main01()
{
int a = 10;
//a = a+1;//11
//++a;//前自增 推荐写这种
//a++;//后自增
int b = ++a * 10;
printf("%d\n", b);//110 先自增之后再计算表达式
printf("%d\n", a);//11
int b = a++ * 10;
printf("%d\n", b);//100 先计算表达式之后再自增
printf("%d\n", a);//11
return 0;
}
3.3 赋值运算符
#include<stdio.h>
int main02()
{
int a = 10;
//a = a + 5;
a += 5;
printf("%d\n", a);
return 0;
}
3.4比较运算符
C语言的比较运算中,“真”用数字“1”来表示,假 0。
#include<stdio.h>
int main03()
{
int a = 10;
int b = 20;
printf("%d\n", a == b);
int a = 10;
int b = 20;
int c = 10;
//单目运算符计算优先级高于双目运算符
printf("%d\n", c = ++a <= b *2);//计算顺序:++a;b*2;++a <= b *2;赋值给c
printf("%d\n", a);//11
printf("%d\n", b);//20
printf("%d\n", c);//1
return 0;
}
3.5 逻辑运算符
所有非0的值都是真值
3.6 运算符优先级
3.7 类型转换
数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。
转换的方法有两种:
- 自动转换(隐式转换):遵循一定的规则,由编译系统自动完成。
- 强制类型转换:把表达式的运算结果强制转换成所需的数据类型。
类型转换的原则:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
3.7.1 隐式转换
3.7.2 强制类型转换
强制类型转换指的是使用强制类型转换运算符,将一个变量或表达式转化成所需的类型。
语法格式:(类型说明符)(表达式)
#include<stdio.h>
int main04()
{
float p = 3.14;
int w = 2;
double sum = p * w;
//隐式转换 低类型-->高类型
printf("%lf\n", sum);
float p = 3.567;
int w = 2;
//强制类型转换 低类型-->高类型 不会四舍五入
int sum1 = (int)p * w;//6 只对p进行强制类型转换
int sum2 = (int)(p * w);//7 计算后对结果进行强制类型转换
printf("%d\n", sum1);
return 0;
}