我在代码中发现了这一点,但我从未遇到&
这样的问题,只有&&
if ((code & 1) == 1){
你能告诉我它是什么吗?
答案 0 :(得分:1)
这是按位运算符。这意味着在比较发生之前,某些操作是通过“代码”完成的。维基百科说:
按位AND采用两个相等长度的二进制表示,并通过将它们相乘对每对相应位执行逻辑AND运算。因此,如果比较位置中的两个比特都是1,则得到的二进制表示中的比特是1(1×1 = 1);否则,结果为0(1×0 = 0且0×0 = 0)。
顺便说一下,有这样的线程,但关于C ++而不是C,here。
答案 1 :(得分:0)
这是一个按位和运算符。
它检查code
的第一位是否为1,因此检查code
是否为奇数。
答案 2 :(得分:0)
&
是二进制AND运算符,如果它存在于两个操作数中,则将一些位复制到结果中。
例如:
(A& B)= 12,即0000 1100
答案 3 :(得分:0)
这是按位和操作符:
/* binary: 0100, 0010 and 0111*/
int x = 4, y = 2, z = 7;
/* then: */
printf("x & y = %d\n", x&y);
printf("x & z = %d\n", x&z);
printf("y & z = %d\n", y&z);
输出:
x& y = 0 x& z = 4 y& z = 2
对于或操作你有相同的东西:
/* then: */
printf("x | y = %d\n", x&y);
printf("x | z = %d\n", x&z);
printf("y | z = %d\n", y&z);
输出:
x | y = 6
x | z = 7
y | z = 7
因此,在您的情况下,if ((code & 1) == 1)
是一个测试,以了解code