c语言如何四舍五入_「每天C语言干货」 4.数据基本运算(1)

一、上期回顾

上期问题int代表整数类型,但是如果我们真的不小心让int类型的数带小数了,比如3.6。这个时候输出这个数字的值该是多少呢?,不知大家思考得如何了呢?

48dd7bca12ae073946cadcbf7e51bfab.png

正确答案是3,大家有没有亲自去尝试打印它的值呢?快让我看看认为是四舍五入到4的小伙伴有哪些吧?

843567ad654489a0fe5fd9f31f9cd5fa.png

就算它的值是3.9999,结果一样是3哦。这次的答案将在本期的内容中做讲解。

d8100638fb27343372d7dcfdc17144bc.png

二、算数运算

2.1 加法(+)

int a = 1,b = 2;int c;c = a + b;

上述的代码就是让变量c等于a加b的值,结果为c = 3。

int a = 8,b = 2;a = a + b;

如果这样结果会如何呢?会不会是两边同时减去a,于是b等于0呢?

48413f4cc55b57cca48b60e47fd2157a.png

其实,这句话的意思是先让a加b,然后把相加后的结果赋值给a。但是狂拽酷炫的程序员还可以使用下面这种表达方法哦,结果是一样的。同理,加法运算也可以运用在其他类型的数据上,比如char,double等。

int a = 8,b = 2; a += b;

2.2 减法(-)

减法和加法类似,下面的式子结果就是a = 6。

int a = 8,b = 2; a -= b;

2.3 乘法(*)

当然,乘法也是so easy啦!下面的式子结果就是a = 15。

int a = 5;a = a * 3;
8fc0d3a8fc0c472dee025d13aa4929e8.png

2.4 除法(/)

在除法中就要介绍一些坑了哦!在整数变量的运算中,运算只会取变量值的整数部分,不会做四舍五入,因此如果我们计算下面的式子:

int a = 7;a /= 2;

最终的结果将会是3,不会是3.5!结果只去整数部分,谁叫int类型是整数呢?

adda848ded2c5cf9978f9aae3c985c77.png

同理,如果是整数3.5乘以2,结果将会是6,而不是7。

0b4611e838179003d9ac062916f17b8d.png

但如果用float浮点类型,那么我们就可以正常计算小数了!现在将7除以2,就可以是3.5了哦。

21c20ea077e1da1a7ba51ea2ec0447d2.png

同理,利用浮点型数计算3.5乘以2,结果将是7。而不是整数类型的计算结果6。

1cd2cae74db391107109da7b6001c9f5.png

大家可以验证一下,对于加法和减法,这个结论也是一样适用的!

e8b5d8c2c61c22189f11ab276cdc2282.png

2.5 求余(%)

求余运算顾名思义,就是求商之后的余数,比如将7除以2,余数是1。

b9e4ead6488435b16009e5a3222f76e3.png

大家注意,求余运算只能用于整数,不能用于浮点型的数哦,否则编译器就会报错。

171eb8ef8919955c7ca8a349d4fef88c.png
c5057fd71c58a2bb402888ee2c756f27.png

三、单目运算

3.1 非运算(!)

非运算也是比较好理解的,就是让一个数的结果倒置,结果为让“真”,变为“假”,让“假”变成“真”。

c语言规定非0的数就是“真”, 只有0才为“假”。对0做非运算的结果为1,而对非0的数做非运算的结果都为0。

5f2e68b4294f605cef0d32bd371eba83.png

大家可以看到,不管是正数b还是,负数a,非运算的结果都是0。对于等于0的变量c,非运算的结果为1。

9c7ebcc8a4430c84b8d80e13963eea87.png

3.2 按位取反(~)

按位取反涉及到二进制的运算知识,意思就是将二进制0变成1,将二进制1变成0。比如对于8位十进制数7这个数字,它的二进制表示为0000 0111,对其进行按位取反后,值为1111 1000,对应十进制为-8。

60a251fde5f48d8f22c8dde52115c783.png

大家都知道要求一个二进制数的相反数,就是将二进制数取反再加1,所以我们要求一个数的相反数,可以这样做:

int x = 9; x = ~x + 1;

当然x可以等于任何数,上述算法的结果为x = -9。

3.3 自加(++)

对于自加运算的结果,其实就是将一个数加1。但是自加存在先后顺序的问题。比如下面的代码:

ccdf5d3d6e58ca90073bed5f73e36857.png

代码中的a++,表示在这行代码执行结束后,a的值再加1。所以在这行代码执行时,变量b只会被赋值为a自加之前的值,也就是1。所以在接下来的printf函数中,就出现了a等于2,但b却等于1的情况。

但是我们把“++”的位置变动一下,变成“++a”,结果就不一样了哦!

a7d2fb9435b6bb093369e46e2c1adfc6.png

代码中的++a, 表在在这行在吗执行结束之前,a的值事先+1,所以变量b会被赋值为a自加之后的值,也就是2。是不是很神奇呢?

3.4 自减(--)

自减的运算和自加是一样的逻辑,大家可以把自加代码中的“++”改成“--”试试看哦!

四、本期问题

对于自加运算是企业笔试题中相当常见的题目哦,让我们来看看下面的式子运算后,a和b的值分别是多少吧?检验一下是不是真的学会了呢,我们在下期讲解。

int a = 1;int b = ++a+(a++)+a++;
d53c640047c180058a179a8ac9bb5352.png

如果大家喜欢可以关注转发加收藏哦,看更多有趣干货!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值