• C语言04、操作符


    操作符

    C语言的操作符有很多种:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用函数调用和结构成员

    算术操作符(+ - * / %)

    除了%只能作用于整数,其他几个操作符都可以作用于整数和浮点数

    移位操作符

    <<  左移操作符

    >>  右移操作符

    注意:移位操作符的操作数只能是整数,不仅被移的数要是整数,被移的个数也要是整数,并且不要移动负数位,这个是标准未定义的

    左移操作符(<<)

    移位规则:左边抛弃,右边补0

    右移操作符(>>)

    右移操作符分为两种:

    1.逻辑移位    左边补0,右边丢弃

    2.算术移位    左边补原符号位,右边丢弃

    一般情况下是算数右移

    位操作符(&   |    ^)

    位操作符有:&(按位与)

                          |(按位或)

                          ^(按位异或)

    注意:它们的操作数必须是整数

    &:二进制下相同位数为1则为1,不相同则为0

    |:二进制下相同位数至少有一个是1则为1,没有一个1则为0

    ^:二进制下相同位数相同为0,相异为1

    赋值操作符( = )

    赋值操作符的运算顺序是从右往左,并且可以连续赋值。

    注意与==区分开来

    复合赋值符

    +=、*=、/=、%=、&= ......

    单目操作符

    !、-、+、&、sizeof、~、--、++、*、强制类型转换......

    即只有一个操作数的操作符就叫单目操作符

    关系操作符(>  <  >=  <=  !=  ==)

    注意区分 = 与 ==

    逻辑操作符(&&   ||)

    &&:逻辑与

    ||:逻辑或

    注意逻辑与、逻辑或的短路问题

    逻辑与从前往后若遇到一个条件为假,则后面的都不执行了

    逻辑或从前往后若遇到一个条件为真,则后面都不执行了

    条件操作符

    例如:a>b?a:b;相当于if(a>b)则选择a

    注意:尽量带括号来防止优先级和结合性带来的错误

    逗号表达式

    exp1,exp2,exp3,exp4,exp5...expN

    逗号表达式从左往右依次执行,整个表达式的结果是最后一个表达式的结果,但是中途该有的表达式运算还是有的

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

    下标引用操作符([ ])

    1. int arr[10];//创建数组
    2. arr[9] = 10;//实用下标引用操作符。
    3. [ ]的两个操作数是arr和9

    函数调用操作符

    1. #include
    2. void test1()
    3. {
    4. printf("hehe\n");
    5. }
    6. void test2(const char *str)
    7. {
    8. printf("%s\n", str);
    9. }
    10. int main()
    11. {
    12. test1();            //实用()作为函数调用操作符。
    13. test2("hello bit.");//实用()作为函数调用操作符。
    14. return 0;
    15. }

    访问结构体成员操作符

    .       结构体.成员名

    ->    结构体指针->成员名

    1. #include
    2. struct Stu
    3. {
    4. char name[10];
    5. int age;
    6. char sex[5];
    7. double score;
    8. };
    9. void set_age1(struct Stu stu)
    10. {
    11. stu.age = 18;
    12. }
    13. void set_age2(struct Stu* pStu)
    14. {
    15. pStu->age = 18;//结构成员访问
    16. }
    17. int main()
    18. {
    19. struct Stu stu;
    20. struct Stu* pStu = &stu;//结构成员访问
    21. stu.age = 20;//结构成员访问
    22. set_age1(stu);
    23. pStu->age = 20;//结构成员访问
    24. set_age2(pStu);
    25. return 0;
    26. }

    表达式求值

    表达式求值的顺序是由操作符的优先级和结合性决定的

  • 相关阅读:
    阿里云服务器续费流程方法_续费优惠封神教程
    25计算机考研院校数据分析 | 浙江大学
    day25-Listener监听器
    Swift 周报 第三十九期
    父组件中通过v-model来显示子组件
    Linux centos7 bash编程(循环与条件判断)
    季涨约3~8%,DRAM合约价大幅回升 | 百能云芯
    蓝桥杯备考随手记: 常用的三种排序算法(冒泡排序、插入排序、选择排序)
    Java 集合常见知识点&amp;面试题总结(上),2022 最新版!
    【周报2023-11-10】
  • 原文地址:https://blog.csdn.net/weixin_60320290/article/details/126138470