基本运算符-算术运算符,优先级

基本运算符

基本运算符又叫基本算术运算符,包括 =、+、- 、*、/、%五种。C语言没有指数运算符,但是其标准函数库提供了指数运算函数,pow。

举例:

a = pow(3.8,6.6);返回值a为3.86.6次幂。

赋值运算符 “=”

在C语言中 “=” 不是相等的意思,而是赋值的意思,将某一个值赋予给另一个变量。

举例:

time = 2022;//把值2022赋给变量time

赋值行为是从右往左进行的。

再看:

2022 = time;

如何理解这个语句? 这在C语言中是没有意义的,也是无效的。 在该语句中,2022被称为右值,只能是字面常量,
C语言规定,不允许给常量赋值。

规则:
= 的左侧必须是一个变量,进一步来说,它必须引用一个存储位置。其中最简单的方法就是使用一个变量名。

赋值表达式的目的是把值存储到内存位置上,用于存储值得存储位置统称为数据对象。

加法运算符 +

加法运算符用于加法运算,使其两侧的值相加。

减法运算符 -

减法运算符用于减法运算,使左侧的数减去右侧的数。

符号运算符 + 和 -

加法和减法是二元运算符,符号运算符是一元运算符。

符号运算符表示一个数是正数还是负数。

可以对变量进行标记。

a = -100;
b = -a;

乘法运算符 *

乘法运算符用于乘法运算,C语言没有指数运算,在程序里有时候可以用乘法运算来间接实现指数运算。

除法运算符 /

除法运算符用于除法运算,左侧是被除数,右侧是除数。

除法分为整数除法和浮点数除法

在整数除法中,会出现无法整除的情况,如果实际结果有小数部分,整数除法会丢弃小数部分,这个过程被称为截断。也就是我们常说的的取整。

取整是直接丢弃小数部分,不会四舍五入!

举例:

5/4结果为1
6/3结果为2
7/4结果为1
7./4 结果为 1.75  浮点数除法
7./4. 结果为 1.75  浮点数除法

求模操作符 %

求模运算符用于整数运算,用于求出左侧整数除以右侧整数的余数。求模操作又叫取余。

注意:
求模运算只能用于整数,不能用于浮点数。

c99标准“趋零截断”:如果第一个运算对象是负数,那么求模的结果为负数;如果第一个运算对象是正数,那么求模的结果为正数。

举例:

11%2 结果为 1
11%-2结果为 1
-11%-5结果为 -1
-11%5结果为 -1

求模运算常用于程序的控制流!

举例:

假如每过10s,你就需要读取一次温度传感器的值,可以在程序中对时间求模,(time%10)
并检查结果是否为0。如果为0,则去读取一次温度传感器的值。

实际上,标准规定,求模可以通过公式求得a%b 可由 a-(a/b)*b求得。

算术运算符优先级

+、- (一元) R-L
*、/、% L-R
+、- (二元) L-R
= R-L

举例:
data = hl + cu*du/fb;
画图分析:

举例:

xa = 6*1 + 9*8;

当运算符共享一个运算对象时,优先级决定了求值顺序。

在上述表达式中,1是 * 和 +的运算对象,9也是类似的道理。根据运算符的优先级,先执行乘法运算,再执行加法运算。

但是这里有两个乘法运算,应该先执行哪个呢?
如果,根据 * 的结合律,从左往右,那应该先计算 6 * 1, 但是两个 * 法并不共享同一操作数。

如果,根据加法运算的结合律,从左往右,那应该先计算6*1,但是这又与优先级相矛盾。 因为要先计算乘法,此时加法还不起作用。
所以,这个是由编译器决定的,不同的编译器可能两个乘法计算的顺序是不同的。但是,不用担心,最后的结果是相同的。

举例:

-2+5*6 +4+3*2+3))

结果为-23。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiawucha159

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值