C-基础笔记2
算术运算符: + - * / %(取余)
1.通用细节:
- 整数计算,结果一定是整数
例如10 / 3 结果为3 而得不到3.333
小数计算,结果一定是小数
整数和小数计算,结果一定是小数
小数直接参与计算,结果可能不精确
(计算机中存储方式为二进制,因此浮点数不准确)
2.取余细节
- 运算的数据必须全部是整数
- 获取余数的正负,是跟第一个数字保持一致的
1 |
|
==计算时,数据模型不一样不能直接运算,需要转换成一样的,才能运算==
隐式转换
把一个取值范围小的,转成取值范围大的
规则1: 取值范围小的,和取值范围大的,小的会自动升为大的,在进行运算
规则2: short char类型的数据在运算的时候,先提升为int,在进行计算
==取值范围:char<short<int<long<long long<float<double==
不同的数据类型进行计算,赋值等操作,会触发隐式转换
强制转换
如果把取值范围大的,赋值给取值范围小的,就需要进行强制转换
格式: 目标数据类型 变量名 = (目标数据类型)被强制转换的数据;
1 | int b = 10; |
1 |
|
字符相加
字符跟数字进行转化的时候会查询ASCII码表(可直接用看)
1 | printf("%d\n", 'a'); |
自增自减运算符:++和—
++表示 变量中的值+1; —表示 变量中的值-1;
++和—放在变量的前面或者后面,单独写一行结果是一样的
自增自减运算符应用场景:年龄增长,增减货物数量等等
自增自减运算符扩展用法
参与计算:例如定义 int a = 10;
int b = a++;
先用后加,此时使用的是原来的值 得到b为10
int b = ++a;
先加后用,此时使用的是自增之后的值 得到b为11
1 |
|
赋值运算符
符号 | 说明 | 举例 |
---|---|---|
= | 直接赋值 | int a=10,将10的值赋值给a |
+= | 加后赋值 | a+=b,将a+b的值给a(左右相加赋值给左边对右边没影响 下面同理) |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b, 将a乘以b的值给a |
/= | 除后赋值 | a/=b,将a除以b的商给a |
%= | 取余赋值 | a%=b,将a除以b的余数给a |
关系运算符
==成立1(真) 不成立0(假)==
符号 | 说明 |
---|---|
== | a==b 判断a是否等于b |
!= | a!=b 判断a是否不等于b |
> | a>b 判断a是否大于b |
>= | a>=b 判断a是否大于等于b |
< | a<b 判断a是否小于b |
<= | a<=b 判断a是否小于等于b |
逻辑运算符
符号 | 作用 | 说明 | ||
---|---|---|---|---|
&& | 与(而且) | 两边都为真,结果才是真(同时满足) | ||
\ | \ | 或(或者) | 两边都为假,结果才是假(二选一) | |
! | 非(取反) | 取反 |
1 |
|
逻辑运算符的短路效果
&&与(而且) ||或(或者) 具有短路效果
例如定义int a = 0;此时printf("%d\n", a>1 && a<10);
此时运行时,由于左边已得出结果为0可确定,因此右边不参与计算
==规则: 当左边的表达式能确定整个表达式的结果了,右边不会参与计算==
三元运算符
格式:关系表达式? 表达式1: 表达式2;
运行规则:先执行关系表达式(做一个判断).若结果成立,执行表达式1;若结果不成立,执行表达式2.
1 |
|
逗号运算符
表达式1,表达式2,…..,表达式n
- 从左到右
- 最后一个子表达式的结果, 是整个表达式的结果
- 优先级最低(永远是最后执行)
1 |
|
运算符的优先级
- 小括号优先于所有
- 一元 > 二元 > 三元
- && > || > 赋值
一元:一个变量可以运算
++ —(自增自减) + - !(正负取反)
二元:
乘除取余;加减;关系运算符(>,>=,<,<=,==,!=);逻辑 与(&&);逻辑 或(||)
三元:
三元运算符,赋值运算符,逗号运算符