• C语言——操作符详解


    前言:这篇文章主要讲解一下C语言中常见的操作符的使用,做一下整理,便于日后回顾,同时也希望能帮助到大家。 

    🎬个人简介:努力学习ing

    📝CSDN主页 愚润求学

    🌄每日鸡汤:念念不忘,必有回响!

    一,操作符的分类

    下面给出一些常用的操作符:

    ●   算术操作符: +    -    *    /    % 

    ●   位移操作符: <<     >> 

    ●   位操作符:    &   |   ^

    ●   赋值操作符:=   +=   -=   *=   /=   ···

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

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

    ●   逻辑操作符:&&     ||

    ●   条件操作符:?   : 

    ●   逗号表达式:,   ,   , ···

    ●   下标引用操作符:[ ]

    ●   函数调用操作符:( )

    1,算术操作符

    C语言中算术操作符的运算规则也就是我们日常数学里面的加,减,乘,除,取模

    值得注意的是:

    1,若果数据的类型都为整形(int),则:/ 运算后,只保留整数部分

    2,运算中,若运算对象类型不同,会先把低等级类型的数转换为对应的高等级类型,再进行运算

    2,位移操作符

    了解位移操作的基础是:

    1,要了解二进制

    2,知道整数二进制的三种表示方法:原码,反码,补码

    在已有上面的基础后,接下来介绍一下位移操作符:

    1) 按位左移( << )

    位移规则:

    左边抛弃,右边补0(对于整型数据,左移一位相当于乘以2)

    书写格式:

    整形数据 << 左移位数

    如:

    5<<2  和  -5<<2

    即:00000101<< 2,得  00010100(十进制的20)

            11111011 << 2,得  11101100(十进制的 -20)

     2)按位右移( >> )

    位移规则:

    左边用原来值的符号位填充(即负数补1,正数补0),右边抛弃

    格式:

    整形数据 >> 左移位数

    如:

    5>>2  和  -5>>2

    即:00000101>> 2,得  00000001(十进制的1)

            11111011 >> 2,得  11111110(十进制的 -2)

     注意:

    1,都是对整型数据二进制的补码进行位移

    2,对于移动的位数:不能是负数

    3,位操作符

    操作的对象都是整型数据的二进制的补码

    1)按位与(&)

    规则:

    对应位,只要有0:结果就是0, 两个都是1:结果才是1

    例如:

    5&4相当于:

     2)按位或( | )

     规则:

    对应位,只要有1:结果就是1, 两个都是0:结果才是0

     例如:

    5 | 4相当于:

     3)按位异或( ^ )

    规则:

    对应位,相同则为0,不同则为1

    例如:

    5 ^ 4相当于

     4)按位取反( ~ )

     规则:

    对应位,取相反的(即1变0,0变1)

    例如:

    4,赋值操作符

    理清楚:赋值操作符最后的落脚点都在赋值

    =的作用就是赋值,如:

    a = 2;   //意思是:把2这个值赋给a

    +=    -=    *=    /=   其实逻辑是一样的,这里举两个例子:

    a += 2;    等效于a = a + 2    //意思是先进行a + 2的运算,再把所得的值赋给a

    a *=2;      等效于a = a * 2    //意思是先进行 a * 2 的运算,再把所得的值赋给a

     5,单目操作符

    单目操作符的特点是:只有一个操作数,且运算优先级较高

    ps:因为单目操作符里面的操作对象涉及很多其他知识,所以在此先不做过多讲解

    6,关系操作符

    关系操作符顾名思义是用来判断两个数之间的关系的,和数学中我们所用到的大于(>),大于或等于(>=)……使用理解上没有什么太大区别

    值得一提的是:

    1,判断两数是否相同要用(==),因为一个=的是赋值操作符

    2,!= 的意思是:“不等于”  ,如:a!=b  就是说:a的值不等于b的值

    7,逻辑操作符

    1)并且(&&)

    (表达式1)&&(表达式2):需要&&左右两边都为真,才为真,只要有一个为假,则为假

    注意短路:当第一个表达式1为假时,已经可以判断为假了,就不会再计算表达式2

    2)或者(||)

    (表达式1)||(表达式2):只要表达式1或者2有一个为真,就为真,只有都是假,才为假

    注意短路:当第一个表达式1为真时,就可以判断为真了,就不会再计算表达式2

     8,条件操作符

    格式:

    表达式1 ?表达式2:表达式3

    规则:

    先判断表达式1,如果为真,就执行表达式2,否则执行表达式3

    例如:

    a>b?a:b      //如果a>b成立,就取a的值,否则取b的值

     9,逗号表达式

    格式:

    表达式1,表达式2,···,表达式n

    规则:

    从左向右结合,依次运算表达式的值,最后整个运算的结果就是表达式n运算的值

    例如:

    x=5+1,x*=6,x+1

    先计算x=5+1得x=6,再计算6*6得36,最后再计算36+1=37,则整个表达式的值为37

     还有很多运算符由于涉及的知识比较多或者其他因素,不方便单独讲解,所以在这里不做讲解

    最后附上各运算符的优先级以及结合性:

    参考:C 运算符优先级 - cppreference.com


    🌈我的分享也就到此结束啦🌈
    要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
    若有不足,还请大家多多指正,我们一起学习交流!

    嘿嘿,王子,公主请一键三连!(✪ω✪)

    感谢大家的观看和支持!最后,☺祝愿大家天天开心!!!

     念念不忘,必有回响!

  • 相关阅读:
    asp.net服装管理系统三层架构
    virtio-net 报文组织形式
    OpenGL 纹理详解
    allatori8.0文档翻译-第七步:多个jar文件不混淆加水印
    Android 12.0 frameworks添加自定义服务
    ChatGPT/GPT4科研应用与AI绘图及论文高效写作
    闭式旁流水处理器简介
    糯米粉可以做什么好吃的 糯米粉做法大全
    如何将firebase应用转为supabase应用(之一)
    如何使用uview中的loadmore上拉加载
  • 原文地址:https://blog.csdn.net/tan_run/article/details/134493923