平时很少用到双目运算,今天突然想用一下,但却发现了一个奇怪的问题,请大家帮忙看看。
如果使用这种写法:
- if (( SYS_HEAT == g_tDevice.chStatus )||( SYS_KEEP_PRE == g_tDevice.chStatus ))
- {
- WorkHookFunction_Table[ g_tDevice.chFunction ].fun();
- }
- else
- {
- WorkHookFunction_Table[ 0 ].fun();
- }
复制代码那么程序运行是正常的,但是如果使用双目运算的写法:
- WorkHookFunction_Table[ (( SYS_HEAT == g_tDevice.chStatus )||( SYS_KEEP_PRE == g_tDevice.chStatus ))?g_tDevice.chFunction:0 ].fun();
复制代码程序运行的结果就不对了,一直都是运行 WorkHookFunction_Table[ 0 ].fun();
在网上翻了下资料,还是没找到我的第二种写法错在哪里,请大家帮忙指点一下.........
PS:程序是使用Keil C51写的,WorkHookFunction_Table是一个函数指针数组
条件 ( (SYS_HEAT == g_tDevice.chStatus )||(SYS_KEEP_PRE == g_tDevice.chStatus) ) 始终为假! 为何?
一周热门 更多>