zoukankan      html  css  js  c++  java
  • C和指针笔记-第5章 操作符和表达式

    这是我读《C和指针》第5章做的笔记,复习一下C语言中各种各样的操作符,希望能对你有所帮助。

    • 位移操作符 >>、<<  

    左移位操作符为<<,右移位操作符为>>。左操作数的值将移动由右操作数指定的位数。两个操作数都必须是整型类型。

    标准说明无符号值执行的所有移位操作都是逻辑移位,但对于有符号值,到底是采用逻辑移位还是算术移位取决于编译器。因此,一个程序如果使用了有符号数的右移位操作,它就是不可移植的。

    • 位操作符 & | ^

    要求操作数为整数类型,它们对操作数对应的位进行指定的操作,每次对左右操作数的各一位进行操作。

    假定变量a的二进制值为00101110,变量b的二进制值为01011011,a&b的结果是00001010,alb的结果是01111111,a^b的结果是011110101(相同为0,不同为1)

    • sizeof操作符

    sizeof操作符判断它的操作数的类型长度,以字节为单位表示。操作数既可以是个表达式(常常是单个变量),也可以是两边加上括号的类型名。

    sizeof(a=b+ 1)没有向a赋任何值。

    • 增值操作符++

    ++或--操作符只能作用于可以位于赋值符号左边的表达式

    抽象地说,前缀和后缀形式的增值操作符都复制一份变量值的拷贝。前缀操作符(++a)在进行复制之前增加变量的值,后缀操作符(a++)在进行复制之后才增加变量的值。这些操作符的结果不是被它们所修改的变量,而是变量值的拷贝,认识这一点非常重要。

    • 关系操作符

    这些操作符产生的结果都是一个整型值,而不是布尔值。在C中,你必须使用双等于号==来执行比较。

    • 逻辑操作符

    &&操作符的左操作数总是首先进行求值,如果它的值为真,然后就紧接着对右操作数进行求值。如果左操作数的值为假,那么右操作数便不再进行求值,因为整个表达式的值肯定是假的,右操作数的值已无关紧要。

    ||操作符也具有相同的特点,它首先对左操作数进行求值,如果它的值是真,右操作数便不再求值,因为整个表达式的值此时已经确定。这个行为常常被称为“短路求值”

    • 逗号操作符

    逗号操作符将两个或多个表达式分隔开来。这些表达式自左向右逐个进行求值,整个逗号表达式的值就是最后那个表达式的值。

    • 总结

    1. 有符号值的右移位操作是不可移植的。

    2. 位操作的位数是个负值容易得到匪夷所思的结果。

    3. 连续赋值中各个变量的长度不一可能会损失精度。

    4. 误用=而不是==进行比较。

    5. 误用|替代||,误用&替代&&。

    参考:C和指针(第二版) 美〕Kenneth A.Reek著  徐波译   人民邮电出版社

  • 相关阅读:
    phpMyAdmin出现错误 Access denied for user 'root'@'localhost' (using password: NO)
    Android使用butterknife注解出现nullPointerException解决
    Fragment Touch事件泄露
    清空Fragment回退栈中某个Fragment之上的所有Fragment
    Fragment保持状态切换
    点击EditText可编辑,点击其他地方不可编辑
    android ActionBar 去掉menu分隔线
    jquery validation remote进行唯一性验证时只使用自定义参数,不使用默认参数
    php 闭包函数
    phpstorm快捷按键
  • 原文地址:https://www.cnblogs.com/XIEjm/p/12918047.html
Copyright © 2011-2022 走看看