初识C语言之运算符(操作符)

  首先,说起操作符,有算术操作符、赋值操作符、关系操作符、单目操作符等等一系列的操作符,接下来给大家简单的了解一下各种操作符,并给出自己的理解和需要注意的地方,那么接下来,开始进入学习环节啦!

算术操作符:+       -        *        /        %

算数操作符就是以上五种,其中大部分大家都见过,但是乘(*)和除(/)尤其要注意,可不是我们数学中的✖和➗哦,注意这点就行。然后就是取余(%)了,这个符号意思是取结果的余数,比如7/3=2余1,那么7%3就等于1了,大家明白了没有呀,这就是算术操作符的内容。

移位操作符:>>    <<

移位操作符包括>>和<<两种,其中>>是右移操作符,<<是左移操作符,注意这里的左移和右移都是指二进制位的移动,因为计算机中所有信息都是以二进制形式存放的。

说起二进制,就是指有32个0或1组成的一串数,例如a=3:00000000……00000011,运算过程是:1*2^1+1*2^0=3(^号指几次方)

a<<1,就变成了:00000000……00000110,结果就为:1*2^2+1*2^1=6

a>>1,就变成了:00000000……00000001,结果就为:1*2^0=1

这便是移位操作符。

位操作符:&        |        ^   

其中&是按位与,|是按位或,^是按位异或,这三个也是二进制的操作符哦,接下来解释一下具体用法

&:如果 x 和 y 都为 1,则得到 1;如果 x 或 y 任何一个为 0,或都为0,则得到 0,简记为:同为1则为1

|:如果 x 或 y 为 1,或都为 1,则得到 1;如果 x 和 y 都为 0,则得到 0,简记为:有1则为1

^:如果 x 或 y 的值不同,则得到 1;如果两个值相同,则得到 0,简记为:相同为0,相异位1

下面举个例子,大家就可以明显看到区别啦

 int a=6 0···00110
int b=11 0···01011
a&b 0···00010
a|b 0···01111
a^b 0···01101

赋值操作符:=   +=   -=   /=   %=    >>=    <<=   |=    &=  

大家可以看出来,赋值操作符有很多很多,上面所举的只是部分,大家可以注意到,=我们都知道,但+=,-=等符号是以前我们从未见到的,其实很简单

a+=2的意思就是a=a+2

b-=3的意思就是b=b-3

以此类推……

尤其注意,这里的=是赋值符,与下面的关系操作符中的==会搞混,下面关系操作符中会详细说明的。

 单目操作符:! -    +    &    sizeof    ~     --    ++    *     .    (类型)

说起单目操作符,顾名思义,就是只有一个操作数的操作符,与之相对应的是双目操作符,即有两个操作数的,例如a++,++就是单目操作符;a+b,+就是双目操作符,接下来便详细说明各个操作符的作用,认真学哦。

这里先说一个概念,在C语言中0表示假,非0表示真

!是逻辑反操作,举个例子,int a = 0(0表示假),那么!0就表示真,在一个值前面加上!,就会真变假,假变真

-,+:注意注意,这里的-,+表示的是负值,正值,并不是加减的意思,如+2,-3等等

&,* .:取地址操作符,间接访问操作符(解应用操作符)这个符号在后面指针部分会详细讲到,大家敬请期待呀!!

sizeof:是一个计算操作数的类型长度的操作符(单位是字节byte),例如:

打印出来结果如下

 至于int类型长度为什么是4,请大家关注我前面发的初识C语言之数据类型部分。

~:对一个数的二进制按位取反,将原来的0变为1,1变为0,例如1的二进制:0……00000001,那么~以后,变为:1……11111110,就ok啦

--,++:++和--可以大致理解位+1,-1,并且这里的++和--分为前置和后置两种,前置的是先使用,后++或--,后置的是先++或--,后使用,具体是什么意思呢,看下面解释。

 大家注意看,上面首先给出a的值是1,然后打印a++是前置++,那么根据我们的口诀,前置++先使用,后++,因为先使用所以先打印的就是a的值1,接着++,下一个打印的就是++以后的值2。

接着我们看一下++a的情形,是如何先++,后使用的

 大家通过观察可以看到,第一次打印,先++,a+1变为2,再打印,所以打印出来就是2,第二次打印的自然就是++以后的值2啦。

--与++的情形类似,大家可以想想,并上机实践实践,这里再强调一下,一定要多上机实践啊xdm,上机才能使自己掌握知识掌握的更好喔!!

(类型):强制类型转换,比如下图的例子

大家观察上图,a开始是float类型的,然后定义一个int类型的b,将a强制类型转换为int,1.25就会变为整型1,所以打印出来的b是1。

以上便是单目操作符的全部内容啦。 

关系操作符:>    >=    <     <=   !=    ==

这里的>,<,>=,<=大家都了解,我就不过多解释了,后面的!=就是不等于,==就是等于

这里讲一讲=和==的区别,大家通过分类可以清楚看出=是赋值操作符,而==是关系操作符,那么我们在代码中如果想表示谁和谁是否相等时,应该用的是关系操作符==,如果想表示的是把一个数赋值给另一个数,就自然用的是=啦,大家是否能辨别清楚呢

 逻辑操作符:&&    ||

&&:逻辑与
1、当&&左边为假,则不再进行右边的判断,结果为假;
2、当&&左边为真,判断右边,右边为假,结果为假;右边为真,结果为真;

 如上图所示,是有关逻辑与的,大家可以先观察结果,想一想为什么,然后再看下面的解释,看看是不是一样的想法。

首先第一个,a = ++a && b++中,&&左边的++a为真,所以左右两边的表达式都要执行,++a后a为2,b++后b为3,左右两边都为真,所以a的值最终为1,所以打印的第一个结果为1 3;

接着看第二个,c = --a && ++b中,&&左边的--a为0,左边为假,所以就不用执行右边的了,所以a变为0,b不变仍为3,由于&&左边为假,所以结果为假,所以c就为0,因此打印的结果为0 3 0。

这里重点提醒一下,&&操作符若是左边为假,则右边无需执行,这是易错点哦,牢牢记住这一点!!

||:逻辑或
1、当||左边为真,则不再进行右边的判断,结果为真
2、当||左边为假,判断右边,右边为假,结果为假;右边为真,结果为真

 上图是有关逻辑或的运算,大家照常先算算看和答案相同吗,再看下面的解释。

首先看a = ++a || b++,||左边为++a等于2,为真,则不进行右边的判断b++了,结果为真,即a最终为1,而b不变,仍为2,所以打印出来为1 2.

接着看c = --a || ++b,||左边为--a等于0,为假,所以左右都做判断,左边为0,右边++b为3,所以结果为真,即c为真,故c等于1,所以打印结果为0 3 1。

逻辑或||操作符,需要注意的便是若左边为真,则不用进行右边的判断,这个也是很容易忽视的点哦,一定注意注意再注意!

这便是逻辑与和逻辑或操作符具体讲解,想必大家已经很好的理解了吧(◦˙▽˙◦)

 条件操作符:exp1?exp2:exp3

exp1?exp2:exp3的意思是,若exp1成立,则计算exp2,整个表达式结果是exp2的结果

exp1不成立,则计算exp3,整个表达式结果是exp3的结果

举个简单的例子:
 

int a = 5;

int b = 2;

int c = a>b?a:b;

上面的意思就是,a>b成立,所以c的值就取a,所以c就等于5。

当然啦,大家有没有观察到,条件操作符有三个操作数,所以属于三目操作符

逗号表达式:exp1,exp2,exp3……expn

逗号表达式的意思就是几个表达式中间用逗号连接,整个表达式的结果取最后一个表达式的结果,但是前面的表达式必须都算一遍,因为前面的表达式,有可能影响后面的表达式的结果哦

举个例子,上截图

 图中d后面是条件表达式,先算a+=5,算出a=15,再算b+=a,算出b=35,最后算c=a+b,算出c=15+35=50,故最后d的结果就是50.

观察上式,最后一个表达式的结果取决去前面的表达式运行后的结果,所以即使整个表达式的结果取最后一个表达式的结果,也必须按顺序算一遍的。

下标引用,函数调用,结构成员操作符:[ ]    ()      .     ->

下标引用操作符:[ ]常用于数组,例如:

int arr[5]={ 0 };
arr[4] = 5;

它的操作数的数组名下标哦!

函数调用操作符:()

int my_min(int x,int y)
{
    return x>y?y:x;
}

int main()
{
    int min =my_min(5,8);
    printf("%d",min);
    return 0;
}

图中的my_min后面的()就是典型的函数调用操作符了

在例子中它的操作数有三个:函数名58

结构成员操作符:.      ->

结构成员操作符会在我们后面要学习的结构体中大量出现,所以会在结构体学习中再做重点解释,敬请期待٩(๑•̀ω•́๑)۶

终于结束啦,以上便是此次初识C语言之操作符的全部内容,谢谢大家观看,下个博客再见

ヾ( ̄▽ ̄)Bye~Bye~

 (◦˙▽˙◦)    (◦˙▽˙◦)

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
 

)">
下一篇>>