【C语言操作符详解!!!】新手也都可以看懂哦~

本文详细介绍了C语言中的算数、位操作符、关系运算、逻辑运算以及赋值、单目操作、条件表达式等内容,包括整数与浮点数的运算规则,以及数组下标引用和函数调用的基本用法。

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

一、算数操作符

什么是算数操作符?就是平时我们所运算的加减乘除(+,-,* ,/,%),也可以说是双目操作符。(双目就是这个运算符会对两个变量进行操作)

这里博主将对双目进行一个解释,以免有刚入坑的宝子们看不懂。

eg:   int a = 1,b = 2, c = a+b;(那么c则是对a和b两个变量进行了操作)

前三个还是很好理解的,那么我们可以多多注意后面两个,很多刚刚接触的小比特们就很容易弄混,就比如刚处于萌新的我(,,ԾㅂԾ,,)

 /(除):除号两边的操作数如果都为整数,那么就会执行整数除法,得到的是整数,会用到int整型表达;如果有一变操作数为浮点数,那么就会执行浮点数除法,得到的是小数,会用到float浮点型表达。(float浮点型的输出会保留小数点的后六位)

那就跑个代码看一下吧~

 好了,现在我们可以将代码分析一下,第一个出现的值为1的原因,是因为x的变量为整形,得到的结果只能为整数。那么第二个尽管y的变量为浮点型,3/2应该为1.500000,而结果为1.000000。原因就在于C语言中,整数除法是整数,只会返回整数部分,丢弃小数部分。

那我们如何解决呢?如果希望得到浮点数,那么/号两边必须至少有一边为小数,那我们举个例子吧~代码如下

 %(模):得到的是两个整数相除的余值

 注意!!!求模只能用于两个整数!不可用于浮点数。

那我们来举个栗子吧~让代码跑起来~

可见5 % 2的余数为1。

那么当我们遇到负数的时候我们应该怎么做呢?

负数求模的规则结果的正负号由第一个运算数的符号决定。

 接下来博主将会举3个栗子进行说明~

 

 嘿嘿,第一个板块结束啦~是不是很简单呢~


二、位移操作符

<<左移操作符

>>右移操作符

注意:唯一操作符只能是整数。(左和右记得分清箭头的指向)


在这里博主将会给大家做个知识的铺垫。

原码,反码和补码

 

 (原码,反码,补码,博主将会再位操作符里进行举例)

 那怎么用二进制来表达呢?博主在此会举栗子~

二进制就是满二就要进一,所以是以0和1组成的。

eg:6(110)0*2^0+1*2^1+1*2^2=0+2+4=6

        7   (111)  1*2^0+1*2^1+1*2^2=1+2+4=7

        8   (1000)  0*2^0+0*2^1+0*2^2+1*2^3=0+0+0+8=8

相信大家找一下规律是可以看得懂的,从右往左一次是2^0,2^1,2^2,2^3…我们还是来用一张图更加直观的阐释一遍吧。

举个13的栗子

当然啦,还有八进制,十进制,十六进制也是如此一样的算法。在生活中我们经常会用到十进制,就是我们平时说的自然数,17+18=35,满十进一同理可得。

那么怎么将十进制数变为二进制数呢?在这里我们也用一张图简单了解一下。

 继续回到位移操作符~(上部分的知识点有些凌乱,博主之后会通过内存更直观的讲解)


 

2.1左移操作符

移动规则左边抛弃,右边补0

 

 10的二进制为1010

2.2右移操作符

位移规则(右移运算分为两种)

1.逻辑右移:左边用0填充,右边丢弃。

2.算数右移:左边用原该值的符号位填充,右边丢弃。

 

注意 :对于位移运算符,不要移动负数位,这个是标准没有定义的。


三、位操作符 

&(按位与),|(按位或),^(按位异或),~(按位取反)这些都是按对应的二进制位来操作的。

注意:以上他们的操作数必须是整数。

那么也有和他形象相似的,我们也来区分一下,这些是用来描述真假的。

3.1   &和|

 我们先来讲一讲按位与,咱们直接来上代码,代码中有详细的解说

口诀:&(按位与)有0则为0,两个同时为1,才为1

 再来讲一讲按位或,也是直接上代码。

口诀:|(按位或)有1则为1,两个同时为0才是0。

 

 

 确定按位与的最低为

我们可以用按位与确定最低位,上代码:

 如果想要确定第五位的数字呢?那我么可以直接想右移动四位来按位与看是否等于1,如果等于1那么就是的。

(>>4)&1==1

3.2  ^和~

我们先来了解按位异或,上代码

口诀:^(按位异或)相同则为0,相异则为1

这里博主用异或讲解一个题目,以便更好的理解。

题目:不能创建第三个临时变量,来实现第三个数的交换。

这里我们先来放一段代码,就是可以创建临时变量所用到的方法:

 

那么如果不用第三个变量呢?我们可以用到异或,博主在这里还是先放一段代码,在进行详细说明。

 我们先来看一下左边的将数字带入进去,首先我们要知道异或满足于相同为0,相异为1。如图示,3的二进制数为011,5的二进制数为101,根据遵循法则得到110,再一次和3的二进制011来异或,得到101刚好就是5的二进制数,从而实现了两个数的交换。

再来看一下右边的图,我们讲他们分解一下,从右往左执行,如图示:

 第一行左边的a是a异或b,那么第二行的a就是第一行的值,所以第二行的b的值为a异或b异或b,所以由遵循规定可得,b异或b相同得到的为0,0再异或a等到的是a,所以就是a赋给了b,第三行同理,这样就通过异或符号,将两个数进行了去交换,现在是不是很清晰了呢~

 

 那么什么是按位取反呢?

就是将初始数值转换成二进制数,再对二进制数的每一位进行取反:即讲1变为0,将0变为1。


四、赋值操作符

就是在创建变量的时候赋予了一个初始值,在变量创建好后,可以给自己重新赋值。

 4.1连续赋值

有以下两种表达形式,但是博主建议一开始可以多用用第二种,这样的形式写出来的代码更容易理解和观察哦~(注意:连续赋值是从左向右一次赋值的。

第一种:

 第二种:

4.2复合赋值

在写代码时,我们经常会对一个数进行自增和自减,如以下第一幅图,同时C语言也给我们提供了便利的方法,简便表达形式如以下第二幅图。(初学者第一幅更容易懂哦,代码写多了也就熟能生巧了)

 当然还有一些常见的赋值符,博主也放在这里啦,小比特们可以提前先了解一下。


 

五、单目操作符

在刚不久介绍的5个算术操作符为双目操作符外,这里博主即将要介绍单目操作符。

C语言中一些操作符只有一个操作数的(就是只对一个变量进行操作的),被称为单目操作符。(++(自增),--(自减),+(正),-(负))

5.1(前置,后置)++,--

我们先来说一下前置++,二话不说上代码。

 上面我们可以看到,执行的结果a=11,b=11那么是怎么来的呢?前置和后置又有什么区别呢?咱们先来分析分析上面的代码。

在这里前置++有个计算口诀,那就是:先+1,后使用

由a=10--->>++a=10+1=11然后再赋给b,最后再打印得到以上结果

继续二话不说,来上代码,看看后置++

 当然啦,后置++也有计算口诀,那就是和前置相反啦:先使用,后+1。(博主再多唠叨几句,一定要多看,多敲代码,多理解,不要记混了,不然真的很尴尬!)

我们还是来简单分析分析:

a=10,先使用就是先赋值给b,此时,a=b=10,最后再算a++=a+1=11,所以结果如图所示。

同理可得~前置--,后置--,也是一样的啦,小伙伴们可以自己去尝试一下~

5.2+,-

这里的+,-分别代表正号和负号,正号影响不大,可以省略。

我们还是简单的来看个代码

 简单分析一下,a=10,b=-a=-10;c直接赋值为-10,如果要打印a,值为10。

以上类容是不是很容易理解呢~

 


六、关系操作符

关系?毫无疑问,就是用来比较大小的,有> ,>=,<,<=,!=,==。经常会用于if或which语句中,作为测值表达式,返回值结果为0则为假,非零则为真

那么前4个我们平时做数学题就经常看到,着重来看后面两个

!=:操作符用于测试不相等

==:操作符用于测试相等


七、逻辑操作符

C语言中,逻辑运算符是用来进行逻辑运算的特殊符号,它可以对逻辑表达式的真假进行判断。

常用的逻辑运算符有&&(并且),||(或者),!(非)三种。

7.1  &&

当且仅当两边结果为真时,结果才为真,如果运行到&&的左边就检测为假,那么直接回结束运行,返回值为0.一行语句中可以多个运算符连用。

7.2  ||

至少有一个操作数为真时,结果就为真。

7.3  !

用于对操作数进行取反。如果操作数为真结果就取假,如果操作数为假那么结果就取真。


八、条件运算符

条件操作符是C语言中唯一一个三目运算符。

条件运算符的一般形式:表达式1?表达式2:表达式3

如何执行?先计算表达式1的值,如果为真,则算表达式,那么表达式2的值为整个表达式的值;如果表达式1的值为假,则求表达式3,那么表达式3的值为整个表达式的值。

(条件操作符的详细栗子,博主将在之后再补充)


九、逗号表达式

我们直接上代码看个小栗子。

 从括号中一次从左往后算,每个步骤都是必不可少的,可以看到最后一个表达式得到的值为13,那么就是整个表达式的值,所以c的值为13。


十、下标引用、函数调用

10.1下标引用操作符

操作数=一个数组名+一个索引值

咱们直接来看代码

 绿色的一行注释,是括号类每个数值对应的下标,所以答应数组中5的下标对应的是6,打印出来的也就是6。

再来看这张图示说明:

 

10.2函数调用操作符

接受一个或多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

让我们直接看一个代码

 解释如下图注释:

 最后回答上面的问题,至少有一个嗷。


最后全部完结,撒花啦~

博主制作不易,小萌新一个,还会继续努力写博客哒~

对于知识点的认知,如果有错误或者写的不好的地方,请各位大佬们多多指教

有个小小的请求,点个赞和关注支持一下吧~

 再见~

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值