请教个C语言双目运算的问题!

2020-01-26 13:00发布


平时很少用到双目运算,今天突然想用一下,但却发现了一个奇怪的问题,请大家帮忙看看。

如果使用这种写法:
  1. if (( SYS_HEAT == g_tDevice.chStatus )||( SYS_KEEP_PRE == g_tDevice.chStatus ))
  2.         {
  3.                 WorkHookFunction_Table[ g_tDevice.chFunction ].fun();
  4.         }
  5.         else
  6.         {
  7.                 WorkHookFunction_Table[ 0 ].fun();
  8.         }
复制代码那么程序运行是正常的,但是如果使用双目运算的写法:
  1. 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是一个函数指针数组
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。