我正在查看c代码:
if((VAR_ON&3) > 1)
我不确定VAR_ON是什么类型的变量,我的猜测是它是一个指针,但最后& 3对它做了什么?如果这是一个重复的问题我很抱歉,我找不到关于变量后的&符号的任何问题。
答案 0 :(得分:4)
如问题代码中所使用的,&符号&'是一个按位'和'操作。
示例(假设VAR_ON =' 21'):
VAR_ON 21(Decimal) 00010101(Binary)
& 3(Decimal) & 00000011(Binary)
------------ ------------------
1(Decimal) 00000001(Binary)
因此,如果VAR_ON是' 21,则表达式(VAR_ON& 3)将评估为' 1'。 '如果'条件是假的:
if((VAR_ON&3) > 1)
答案 1 :(得分:1)
&安培;在该上下文中将执行一些明智的AND操作。
因此,VAR_ON将与3进行AND运算,以便在比较中仅使用变量的最后2位。
答案 2 :(得分:1)
这是一个按位AND。这不是“变量之后”的&符号。这是一个按位运算二进制运算符,用于两个操作数:VAR_ON和3。