IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    C语言解惑之赋值操作符

    TacuLee发表于 2015-09-16 09:53:12
    love 0

    C Language


    #define PRINTX printf("%d\n", x)
    
    main()
    {
      int x = 2, y, z;
    
      x *= 3 + 2; PRINTX;
      x *= y = z = 4; PRINTX;
      x = y == z; PRINTX;
      x == ( y = z ); PRINTX;
    }

    其输出各为什么?

    这个考查的就是操作符的优化级和关联规则。第一题,*=赋值操作符优先级低于算术操作符+,所以x=10。第二题中,赋值操作符连续赋值,所以x=40。第三题中,==是逻辑操作符,优先级高,所以x=1。第四题中,括号优先级最高,而==不改变x的值,所以x值不变为1。

    优先级参考:

    =、*=为14;+为4;()为1。

     

    未经允许不得转载:TacuLee » C语言解惑之赋值操作符



沪ICP备19023445号-2号
友情链接