码迷,mamicode.com
首页 > 其他好文 > 详细

C陷阱与缺陷 第二章

时间:2016-03-16 22:34:15      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

有关运算符优先级
 
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)
 
 

C陷阱与缺陷 第二章

标签:

原文地址:http://www.cnblogs.com/zhxshseu/p/cefda56259e7d1a7949d73faed221ab0.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!