在C中:var=x | y | z;意思是
因此,我最近开始使用TI的CC2650设备,并试图通过研究他们的一些示例应用程序来学习如何对其进行编程。我看到很多以这种格式声明的变量,我不知道它是什么意思:在C中:var=x | y | z;意思是,c,C,因此,我最近开始使用TI的CC2650设备,并试图通过研究他们的一些示例应用程序来学习如何对其进行编程。我看到很多以这种格式声明的变量,我不知道它是什么意思: var1 = x | y | z; 在上面的示例中,var1是uint8\u t类型。是二进制位的或运算符。例如:0x00ff | 0xff00是0xffff 按位OR运算符,所以如果x=5(101)y=8(1000)和z=20(10100),括号中的值是二进制值,所以 x | y | z=101 | 1000 | 10100=1110
var1 = x | y | z;
在上面的示例中,
var1
是uint8\u t类型。
是二进制位的或
运算符。例如:0x00ff | 0xff00
是0xffff
按位OR运算符,所以如果x=5(101)y=8(1000)和z=20(10100),括号中的值是二进制值,所以
x | y | z=101 | 1000 | 10100=11101
C中的运算符
称为s。与其他按位运算符(例如和&)类似,按位或仅在位级别操作。如果任一位中有一位为1
,则其结果为1
,只有当两位均为0
时,其结果为零。可以称之为管道的|
!请看以下内容:
bit a bit b a | b (a OR b)
0 0 0
0 1 1
1 0 1
1 1 1
在表达式中,您提到:
var1 = x | y | z | ...;
由于在一条语句中有许多|
,您必须知道,按位OR运算符has表示操作从左侧分组。因此,上述表达式将被解释为:
var1 = (x | y) | z | ...
=> var1 = ((x | y) | z) | ...
....
阅读更多关于关联性的内容。我认为最好说操作
或是对称的(交换的),并且是左右关联的。@M.Shaw,不要弄乱逻辑或|
和按位或|
。对不起,我删除了第二部分-但该操作仍然是可交换的,并且是左关联和右关联的。@M.Shaw,看一看。决定它是左关联和右关联是一种设计选择(或者可能是任意的)。很明显,a | b==b | a
和(a | b)| c==a |(b | c)
对于任何a,b,c
。如果是编译器,我甚至不知道它是一个C逻辑运算符。所以我甚至不知道用谷歌搜索。可能是重复的