首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

笔试题解决办法

2012-03-06 
笔试题用宏定义一个求两个数最小值的函数,这个我写出来了#define MIN(A,B) ((A)(B))?B:A下面这个问题就不

笔试题
用宏定义一个求两个数最小值的函数,这个我写出来了
#define MIN(A,B) ((A)>(B))?B:A
下面这个问题就不知道了:
如果list = MIN(*p++,b);这样会发生什么问题?
忘大家指教。

[解决办法]
#define MIN(A,B) ((A)>(B))?B:A

list = MIN(*p++,b);
宏展开:
list = ((*p++)>(b))?b,*p++;
一个运算表达式出现了对同一个变量p两次自增操作.
这个依赖于编译器的实现了.
如*p=1, b=2, *(p+1)=3;
*p++>b为假, 
如果p自加*p=3.
list取*p的值3.然后p自加.

如果p不自加*p=1.
list取*p的值1.然后p自加两次.

热点排行