WHCSRL 技术网

【C语言攻略】从零开始的C语言生活——初阶篇(6)操作符详解

目录

操作符

算术操作符

移位操作符

位操作符

赋值操作符

单目操作符

 关系操作符

逻辑操作符

条件操作符

 逗号表达式

 下标引用、函数调用、结构体成员

 结语


 

操作符

C语言给出了很多的操作符供我们使用,操作符可以帮助我们实现各种的运算。我们可以先对操作符进行一个简单的分类,操作符可以分为:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式还有下标引用、函数调用、结构体成员

算术操作符

算术操作符
+加法操作符
-减法操作符
*乘法操作符
/除法操作符
%%取模操作符

唯一要注意的是除法操作符和取模操作符,当进行除法时如果是两个整形相除只能得到整形,比如7/3得到的的不是2.5,而是2,如果想要得到一个浮点数请用浮点类型进行除法运算。再说取模,取模其实是取余数,比如7/3,商2余1,那么得到的那个余数1就是要得到的数。

移位操作符

移位操作符
<<左移操作符
>>右移操作符

左移右移其实移动的是数字的二进制位,在计算机中数字都是由二进制存储的。左移操作符就是将除了符号位其他为全部向左移动n位。

 

 右移操作符和左移的用法一样,只不过是将二进制位向右移动。

位操作符

位操作符
&按位与
|按位或
^按位异或

在计算机中0为假,非0为真,位操作符也是操作数的二进制位,首先说按位与&,他是将两个数的二进制原码计较,两数有0则为0,全1才为1。

 按位或 | ,则是,一个为1则为1,两个为0才为0。按位异或是两数相同则为0,两数相异为1。

赋值操作符

赋值操作符
=赋值操作符
+=加等于
-=减等于
*=乘等于
/=除等于
&=按位与等于
|=按位或等于
^=按位异或等于
<<=左移后等于
>>=又移后等于

赋值操作符=,应该都知道用法了。其他的操作符其实也很好理解,就是将一个变量进行运算之后再把计算的结果还赋值给这个变量,例如:

  1. #include<stdio.h>
  2. int main()
  3. {
  4. //int sum=3;
  5. //sum=sum+2;
  6. //可以等价为
  7. int sum=3;
  8. sum+=2;
  9. return 0;
  10. }

单目操作符

介绍了这么多操作符,有没有发现这些操作符都是要有两个操作操作数才能进行操作,

操作数 操作符 操作数的形式使用,单目操作符则是只有一个操作数就可以完成他的功能。

单目操作符
逻辑反操作符
-负值
+正值
&取地址操作符
sizeof以字节为单位,计算操作数类型的长度
~操作数二进制位按位取反
--前置--、后置--
++前置++、后置++
**间接访问操作符(解引用操作符)
(类型)强制类型转换

!:逻辑反操作符,0则为1,非0则为0。

-:负值操作,将操作数变为负数,假如操作数已经是负数了,则负负得正。

+:表示正数,没啥用,可以省略,就算是给负数加个正号,根据负正得负还是负数。

 &:取地址操作符,取出变量在内存中存放的地址位置,地址以十六进制表示。

 sizeof:以字节为单位,计算数据类型的长度大小。前面有介绍过就不多解释了。

 ~:按位取反,将操作数的二进制位按位取反。

想要理解为什么6按位取反后得到的是-7,就要先了解数字在计算机里是如何存储的。在计算机中整形是以二进制的补码存储的,整形占4个字节即32位。

 第一位表示符号位,0为正数,1代表负数。而6是正数,正数的原码、反码、补码不变。将6的二进制按位取反,如何再得到这个数的补码,就是-7:

 --:前置--和后置--,这两个的区别就在于,前置的--的对操作数先进行-1的操作后再进行使用,而后置的--则是先使用再进行--。

 ++:前置++与后置++,和前置--和后置--一样使用,所以就不做解释了。

*:解引用,用来对指针进行解引用操作,通过指针去放访问 指针所存储变量的地址所存的值。

(类型):强制类型转换,能够将数据类型进行强制转换,比如将int类型的数据,强制转换成double类型的浮点型数字。

 关系操作符

关系操作符
>大于
<小于
>=大于或等于
<=小于或等于
==判断等于
!=判断不等于

关系操作符更多是用于选择语句判断或判断循环语句的循环条件。

>:判断左操作数是否大于右操作数。

<:判断左操作数是否小于右操作数。

>=:与数学的方式不同(≥),编程语言中是以这种方式表示大于等于的,判断左操作数是否大于或者等于右操作数。

<=:断左操作数是否小于或者等于右操作数。

==:判断两个操作是否相等,但切勿将两个等于号写成一个等于号,一个等于号叫做赋值操作。当一个变量与一个常量比较时可以写成这样:5==a,可以防止不小心写成一个等于号。

!=:用来判断两个条件是否是不相等的。

逻辑操作符

逻辑操作符
&&逻辑与
||逻辑或

也是多用于选择语句和循环语句的判断

&&(并且):只有当两个条件都成立时则条件成立,否则就算其中一个条件成立另一个不成立,也是不成立。

||(或者):当两个条件有其中一个条件成立,则条件成立,两个条件都不成立则条件才不成立。

条件操作符

exp1?exp2:exp3也叫三目操作符

可以用来比较大小,玩的牛的大佬也拿去递归了。

 逗号表达式

exp1,exp2,exp3......expN逗号表达式

直接举个例子:

 下标引用、函数调用、结构体成员

下标引用、函数调用、结构体成员
[ ]下标引用操作符
()函数调用操作符
.点操作符
->箭头操作符

[ ]:下标引用操作符,是用来访问数组下标的,通过数组下标找到数组下标所对应的元素

():函数调用操作符,用来调用函数的参数,函数的参数比较特殊,可以没有参数也可以有很多参数,参数以逗号隔开。但是必须要有函数名 。函数名(参数)

.:点操作符用来访问结构体成员。(结构体再解释)

->:箭头操作符用来访问结构体指针成员。

 结语

可算是让我写完了,虽然有操作符真的是太多了,本来还想把关键字也加进去,但是这样感觉内容就比较杂乱,所以还是下次再写吧。写了四个小时,可能有些地方因为太疲惫了,没写对还请各位看到的大佬提醒一哈,溜了~干饭。