*(ptr++) += 123

*(ptr++) += 123;

等价于:*(ptr) = *(ptr) + 123; ptr++;

而不是:*(ptr++) = *(ptr++) + 123;程序员面试宝典p32

 

#include <stdio.h>

int main()

{

  unsigned char a = 0xA5;

  unsigned char b = ~a >> 4 + 1;

     printf("%d\n",b);

}

答案是250.

1、算术优先级:“~” 大于 “+” 大于 “>>”

2、类型转换:对于混合类型的算术表达式,应将其类型变换为最宽的数据类型。

在本题中,~a >> 4 + 1 ,常量的默认类型是int,所以应先将a变换4个字节进行处理。

 

posted @   挡不住会飞的鸡  阅读(353)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示