zoukankan      html  css  js  c++  java
  • C陷阱与缺陷 第二章

    有关运算符优先级
     
    1. "<<" 和 "+"
    data8 = data4H << 4 +data4L;
    这里本意是让高四位的数据,左移四位,然后和低四位相加,但是因为 “+”的运算符优先级 高于 "<<",所以会导致如下的情况:
    data8 = data4H << (4 +data4L);
     
                     int data8 = 0;
                     int data4H = 0x06;
                     int data4L = 0x09;
                    
                     data8 = data4H << 4 + data4L; /*错误*/
                     data8 = data4H << 13; /*上式等价这个移位运算*/
                     data8 = (data4H << 4) + data4L; /*需要加括号*/
                     data8 = data4H <<4 | data4L; /*或者使用 或 运算符,其优先级比 “<<” 低*/
     
    2. 赋值运算符 “=”
    while(c =getc(in) != EOF)
         putc(c ,out);
    这里的意思是,让c赋值getc(in)的返回值,再判断是否到达文件结尾,但是因为 “=”的优先级最低,所以实际上执行的是:
             getc(in) !=EOF
    的比较值,赋值给c,
    c中实际上只会出现0,1 这两种值。
    所以必须加括号
            while(c=getc(in) !=EOF)
     
     
  • 相关阅读:
    codeforces 659F F. Polycarp and Hay(并查集+bfs)
    codeforces 659B B. Qualifying Contest(水题+sort)
    codeforces 659E E. New Reform(图论)
    codeforces 659D D. Bicycle Race(水题)
    sql_mode值的含义
    MySQL Query Cache
    Orchestrator安装
    脚本VIP更改为keepalive
    MHA软件下载地址
    MySQL中的事件调度器EVENT
  • 原文地址:https://www.cnblogs.com/zhxshseu/p/cefda56259e7d1a7949d73faed221ab0.html
Copyright © 2011-2022 走看看