zoukankan      html  css  js  c++  java
  • 运算符

    2.复合运算符

    (1)i+=1和i=i+1的区别:前者是i的值只计算一次,而后者i的值会计算两次。

    例:a[foo()]+=1和a[foo()]=a[foo()]+1,如果foo()函数打印一条消息,那么前者只会打印一次,而后者会打印两次消息。

    (2)逗号运算符:先求左边的值,求完值后把值丢掉,右边作为整个表达式的值

    函数的实参也是使用逗号分开参数,但是也可以写成: f (a,(t=2,t+3),c) ,第二个参数里面使用了逗号运算符。

    (3)sizeof 和typedef

    sizeof: 返回类型是size_t(无符号整型),注意size_t在不同的平台是不同的类型,有些平台是unsigned long long类型

    用法:

             1.sizeof 表达式

             2.sizeof(类型)

    typedef:类型定义或者通俗的说给类型起别名

    例:typedef  unsigned long size_t,那么size_t就是unsigned long类型

    3.Side Effect和Sequence Point

    a=(++a)+(++a)+(++a)+(++a)   最后a的值是undefined

    Sequence :调用一个了函数可能产品Side Effect,或者++=,—= 这样的复合运算符也可能产生Side Effect.

    Side Effect的计算顺序无法确定。

    在库函数返回时是Sequence Point.

    逻辑与(&&)和逻辑或(||):求值顺序:先求左值,右值可能不会计算或者说求值。

    1.在两个Sequence Poine之间的多个Side Effect的顺序不确定,那么在之间的变量允许被改变一次。

    2.同时在两个Sequence Point之间既要读一个变量的值又要改它的值,只有在读写顺序确定的情况下才可以这么写,比如a[i++]=i和i=i+1,前者的顺序无法确定,后者的计算顺序是确定的。

    例: a=(++a)+(++a)+(++a)+(++a)   最后a的值是undefined

  • 相关阅读:
    win7下virtualbox遇到的问题
    2.5年, 从0到阿里
    TCP/IP入门(4) --应用层
    TCP/IP入门(3) --传输层
    TCP/IP入门(2) --网络层
    TCP/IP入门(1) --链路层
    Socket编程实践(13) --UNIX域协议
    Socket编程实践(12) --UDP编程基础
    Socket编程实践(10) --select的限制与poll的使用
    Socket编程实践(9) --套接字IO超时设置方法
  • 原文地址:https://www.cnblogs.com/yangbingqi/p/3337869.html
Copyright © 2011-2022 走看看