C语言未知&句法

时间:2017-09-28 12:13:19

标签: c

我在代码中发现了这一点,但我从未遇到&这样的问题,只有&&

if ((code & 1) == 1){

你能告诉我它是什么吗?

4 个答案:

答案 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

中是否引发了不太重要的位