今日调试程序遇到一个奇怪的问题
说来是这样的:
if(ID==27&&sizeof(SymbolOnKey)>24&&(tmp-row>4)?4:tmp-row)
这是一个函数里面的一句判断,ID是该函数里的一个int型局部变量,在该if判断前ID已经被赋值为20;SymbolOnKey是全局数组char SymbolOnKey[][6]={..若干常量..},sizeof(SymbolOnKey)=36; tmp 在该函数里声明为char tmp; row在该函数里声明为 static char row =4; 在该if判断前tmp 和row 均被赋值为6;
奇怪的问题出现了,若结合顺序没错的话按推理这个判断明显为假,但是实际执行的时候居然为真
然后我改成如下这样就没问题了
if(ID==27&&(sizeof(SymbolOnKey))>24&&((tmp-row>4)?4:tmp-row))
为啥?第一项ID的判断就为假了,怎么最后与出来的结果为真了,难道是优先级有问题?
|