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

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

【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。

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

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

#include
int main()
{
    //int sum=3;
    //sum=sum+2;
    
    //可以等价为
    int sum=3;
    sum+=2;
    return 0;
}
单目 *** 作符

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

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

单目 *** 作符 !逻辑反 *** 作符-负值+正值&取地址 *** 作符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逗号表达式

直接举个例子:

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

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

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

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

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

 结语

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4948545.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存