[关闭]
@natsumi 2017-03-21T01:52:08.000000Z 字数 483 阅读 1189

奇葩的八阿哥们

C


1 关于运算顺序++、<<、|

比特转换成字节的时候,上面的结果是错的!!!
会先执行完所有的位或再执行8个++,编译能过但是结果不正确= =

  1. //byteArray[j]=(bitArray[i++]<<7)|(bitArray[i++]<<6)|(bitArray[i++]<<5)|(bitArray[i++]<<4)|(bitArray[i++]<<3)|(bitArray[i++]<<2)|(bitArray[i++]<<1)|bitArray[i++];
  2. byteArray[j]=0;
  3. for(k=7;k>=0;k=k-1){
  4. byteArray[j]=byteArray[j]|bitArray[i++]<<k;
  5. }

2 函数内malloc

函数内部malloc的空间指针作为返回值是不可行的!
返回值不为NULL,但是空间已经不存在了,访问这个空间时会发生段错误

3 位与运算优先级低于“==”!!!

  1. if(pduByteBuffer[offset] & F_MASK == 0);//错
  2. if((pduByteBuffer[offset] & F_MASK) == 0);//对
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注