今天在阅读一些C代码时遇到了一个奇怪的符号 任何人都可以向我解释这行是做什么的吗?
if ((dwEvent & EV_RXCHAR) && cs.cbInQue) { /* do stuff */}
答案 0 :(得分:3)
if ((dwEvent & EV_RXCHAR) && cs.cbInQue) { /* do stuff */}
&
is Binary And Operator。 &
适用于两个变量的每一位。检查,
如果dwEvent & EV_RXCHAR
的结果为non-zero
,则检查cs.cbInQue
是否为non-zero
。
如果两个条件都是真的代码,则执行if。
如果dwEvent & EV_RXCHAR
的结果为零,则不检查cs.cbInQue
,否则执行else块中的代码。
答案 1 :(得分:2)
它使用dwEvent
屏蔽(执行二进制AND操作)EV_RXCHAR
,检查结果是否为非零,检查cs.cbInQue
是否为非零,如果两者都为真,则执行条件语句中的代码。
这不一定是“怪异”的表示法。许多程序员将其用作快捷方式,而不是指定(x & y) != 0
。
答案 2 :(得分:1)
这是一个按位操作。你可以在这里阅读它。 link
答案 3 :(得分:0)
它的简短形式,通过检查首先输出这些位(dwEvent& EV_RXCHAR)来检查是否设置了任何位EV_RXCHAR。然后,如果其中任何一个设置它 还会检查是否还设置了cs.cbInQue然后执行这些操作。 例如:
unsigned int x = dwEvent & EV_RXCHAR;
if (x !=0)
if (cs.cbInQue != 0)
{ /* do stuff */}