一、算数操作符
什么是算数操作符?就是平时我们所运算的加减乘除(+,-,* ,/,%),也可以说是双目操作符。(双目就是这个运算符会对两个变量进行操作)
这里博主将对双目进行一个解释,以免有刚入坑的宝子们看不懂。
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函数调用操作符
接受一个或多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
让我们直接看一个代码
解释如下图注释:
最后回答上面的问题,至少有一个嗷。
最后全部完结,撒花啦~
博主制作不易,小萌新一个,还会继续努力写博客哒~
对于知识点的认知,如果有错误或者写的不好的地方,请各位大佬们多多指教
有个小小的请求,点个赞和关注支持一下吧~
再见~