初识C语言1(操作符详解)

本文详细介绍了C语言中的各种运算符,包括算术、移位、位、赋值、单目、关系、逻辑、条件和逗号操作符。重点讲解了整数除法、位移操作以及位操作符的使用,并通过实例解释了它们的工作原理和注意事项。此外,还提到了逻辑短路现象和条件操作符的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

算术操作符

移位操作符

位操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

条件操作符

逗号表达式

1.算术操作符

+    -    *    /    %

 算术操作符的话有:加号(+)减号(-)乘号(*)除号(/)取模(%)。大家应该都非常的熟悉,也比较简单,给大家稍微说一下,其中的一些需要注意的地方我给大家讲一下。加号(+):进行加法计算,可以整数相加,字符相加,浮点数相加,减号(-)乘号(*)也一样。

除号(/),我们来看下面的小例子:

3/5打印的结果为0。这里就要说一下结果为什么是0,不应该是0.6嘛。

3/5,除号(/)两边的两个操作数是整数,所以这里进行的是整数除法,3/5这里是商0余3,不够除,商0,余了个3。如果把3换成6,6/5打印的结果就是1,这里就是商1余1。这就叫做整数除法

如果我们不想要打印整数,想要的是浮点数呢,我们来看下面的小例子:

想要打印出浮点数,除号两端的操作数最少有一个是浮点数,这样执行的就是浮点数的除法。我们就能得到0.6的结果。

因为除号两端有一个是浮点数,所以我们改成float类型。打印的是浮点数,所以用%f。

取模(%)

取模(%)操作符的两个操作数必须为整数。返回的是整除之后的余数。

上面例子打印的结果是 1 。

7 % 3求的就是7 / 3的余数,7 / 3的结果是商2余1,所以打印的结果就是1。

2.移位操作符

(<<) 左移操作符   (>>) 右移操作符

(<<) 左移操作符,我们来看下面例子:

上面把a向左移动移动一位就是把a的二进制序列向左移动一位。

左移操作的移动规则就是:左边丢弃,右边补0。

所以向左移动一位后求得b的值为4。

(>>) 右移操作符

右移操作符分两种:

算术右移,右边丢弃,左边补原符号位。

逻辑右移,右边丢弃,左边补0。

我们来看下面例子:

a的二进制序列:

00000000  00000000  00000000  00000010

向右移动一位的:

00000000  00000000  00000000  00000001

因为a是正数,所以不管是逻辑运算还是算术运算,左边补的都是0。所以得到的b值就是1。

我们可以测试一下当前编译器是采用的算术右移还是逻辑右移,我们用 -1 来测试一下:

负数:-1

我们存放到内存中

说到这里必须给大家交代一个知识点,

整数的二进制表示形式有三种,分别是原码,反码,补码。

原码:直接根据数值写出的二进制序列就是原码。

反码:原码的符号位不变,其他位按位取反就是反码。

补码:反码+1,就是补码。

-1,我们放到a里面怎么放呢,首先我们要写出它的原码,再写出它的反码,再写出它的补码。-1要存放到内存中的话,是以补码的形式存放的。(此算法是针对负数的,正整数原反补相同)。

-1的二进制序列:

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

K稳重

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

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

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

打赏作者

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

抵扣说明:

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

余额充值