有关运算符优先级
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. 赋值运算符 “=”
这里的意思是,让c赋值getc(in)的返回值,再判断是否到达文件结尾,但是因为 “=”的优先级最低,所以实际上执行的是:
getc(in) !=EOF
的比较值,赋值给c,
c中实际上只会出现0,1 这两种值。
所以必须加括号
while((c=getc(in) ) !=EOF)