5.郝斌C语言笔记——运算符

1.算术运算符

    +   把两个操作数相加
    -   从第一个操作数中减去第二个操作数
    *   把两个操作数相乘
    /   分子除以分母
    %   取模运算符,整除后的余数
    ++  自增运算符,整数值增加 1
    --  自减运算符,整数值减少 1
    除法 / 的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截取小数部分;
    被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分
        举例:
            16 / 5 = 3
            16 / 5.0 = 3.20000

    取余 % 的运算对象必须是整数,结果是整除后的余数,其余的符号与除数相同
        举例:
            13 % 3 = 1
            13 % -3 = 1
            -13 % 3 = -1
            -13 % 23 = -13
    自增【或者自减】
        分类:
            前自增  ++i
            后自增  i++

    前自增和后自增的异同:
        相同:
            最终都使i的值加1
        不同:
            前自增整体表达式的值是i加1之后的值
            后自增整体表达式的值是i加1之前的值
    
    为什么会出现自增
        代码更精炼
        自增的速度更快
    
    学习自增要明白的几个问题
        我们编程时应该尽量屏蔽掉前自增和后自增的差别
        自增表达式最好不要作为一个更大的表达式的一部分来使用或者说 i++ 和 i-- 单独成一个语句,不要把它作为一个完整复合语句的一部分来使用
            如:
                //这样写不但是不规范的代码,而且是不可移植的代码
                int m = i++ + ++i + i + i++;
                printf("%d %d %d", i++, ++i, i);

2.关系运算符

    >   检查左操作数的值是否大于右操作数的值,如果是则条件为真
    >=  检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真
    <   检查左操作数的值是否小于右操作数的值,如果是则条件为真
    <=  检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真
    !=  检查两个操作数的值是否相等,如果不相等则条件为真
    ==  检查两个操作数的值是否相等,如果相等则条件为真

3.逻辑运算符

    !   逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假
    &&  逻辑与运算符。如果两个操作数都非零,则条件为真
    ||  逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真
    注意:
    -----------------------------------
        !=!=   真

        真&&=   真
        真&&=   假
        假&&=   假
        假&&=   假

        真||=   真
        真||=   真
        假||=   真
        假||=   假

        C语言对真假的处理:
            非零是真
            零是假

            真是1表示
            假是0表示

        &&左边的表达式为假,右边的表达式肯定不会执行
            举例:
                int k = 20;
                int m;

                m = (1 > 2) && (k = 5);
                printf("m = %d, k = %d", m, k);

        ||左边的表达式为真,右边的表达式肯定不会执行
            举例:
                int k = 20;
                int m;
                
                m = (1 < 2) || (k = 5);
                printf("m = %d, k = %d", m, k);
    -----------------------------------

4.位运算符

    &   按位与操作,按二进制位进行"与"运算
    |   按位或运算符,按二进制位进行"或"运算
    ^   异或运算符,按二进制位进行"异或"运算
    ~   取反运算符,按二进制位进行"取反"运算
    <<  二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0>>  二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃
    举例:
        &   ——  按位与
            &&逻辑与,也叫并且
            &&&的含义完全不同
            1 & 1 = 1
            1 & 0 = 0
            0 & 1 = 0
            0 & 0 = 0
        
        |   ——  按位或
            ||逻辑或
            |按位或
            1 | 1 = 1
            1 | 0 = 1
            0 | 1 = 1
            0 | 0 = 0

        ~   ——  按位取反
            ~i 就是把 i 变量所有的二进制位取反
            ~(0101) = (1010)

        ^   ——  按位异或
            相同为零
            不同为1
            1 ^ 1 = 0
            1 ^ 0 = 1
            0 ^ 1 = 1
            0 ^ 0 = 0
            
        <<  ——  按位左移
            i << 3 表示把i的所有二进制位左移3,右边补零
            左移n位相当于乘以2的n次方,前提是数据不能丢失

        >>  ——  按位右移
            i >> 3 表示把i的所有二进制右移3,左边一般是0,当然也可以补1
            右移n位相当于除以2的n次方,前提是数据不能丢失
    位运算的实现意义
        通过位运算符我们可以对数据的操作精度到每一位    

5.赋值运算符

    =   简单的赋值运算符,把右边操作数的值赋给左边操作数
    +=  加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数
    -=  减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数
    *=  乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数
    /=  除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数
    %=  求模且赋值运算符,求两个操作数的模赋值给左边操作数
    <<= 左移且赋值运算符
    >>= 右移且赋值运算符
    &=  按位与且赋值运算符
    ^=  按位异或且赋值运算符
    !=  按位或且赋值运算符

6.其他运算符

    ?   三目运算符
        格式:
            A ? B : C
        等价于
            if (A)
                B;
            else
                C;

    ,   逗号表达式
        格式:
            (A, B, C, D)
        功能:
            从左到右执行
            最终表达式的值是最后一项的值

7.优先级别

    算术 > 关系 > 逻辑 > 赋值

8.题目

    A) i = i * 8;
    B) i = i << 3;
    请问上述两个语句,哪个语句执行的速度快
    答案:B快
    A)i = i / 8;
    B)i = i >> 3;
    请问上述两个语句,哪个语句执行的速度快
    答案:B快

如有不对或者疏漏的地方,请多多指出。谢谢(⁄ ⁄•⁄ω⁄•⁄ ⁄)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值