// How does this program work with ternary operator
#include <stdio.h>
int main()
{
int x = 2, y = 5;
(x & y) ? printf("True ") : printf("False "); // How do we get output
(x && y) ? printf("True ") : printf("False ");
return 0;
}
这个程序如何运作? 逻辑和按位运算符如何工作?
答案 0 :(得分:3)
在此程序中,&
是一个按位运算符,它将在2和5上执行按位and
运算。
0000 0010<=2
0000 0101<=5
0000 0000<=output
所以第一行会打印False
,
而第二个是普通and
运算符,两个值都为真(非零数字),因此2 && 5
将导致为true,输出将为True
。
答案 1 :(得分:0)
按位AND运算符是单个&符号:&amp;。一个方便的助记符是布尔AND和&amp;&amp;的小版本适用于较小的部分(比特而不是字节,字符,整数等)。本质上,二进制AND只是以二进制形式获取数字每个位置的位的逻辑AND。
&amp; (和强>):
00000010 & //2
00000101 = //5
--------
00000000 // 0
按位OR的工作方式几乎与按位AND完全相同。唯一的区别是两个位中只有一个需要为1,因为结果中该位的位为1.(如果两个位都为1,则结果在该位置也将为1。)符号为管道:|。同样,这类似于布尔逻辑运算符,它是||。
|的示例(或强>):
00000010 | //2
00000101 = //5
--------
00000111 //7
按位异或没有布尔运算符对应,但有一个简单的解释。异或操作需要两个输入,如果其中一个或另一个输入为1,则返回1,但如果两者都不是,则返回1。也就是说,如果两个输入都是1或两个输入都是0,则返回0.按位异或 - 与插入符号的运算符^,对每对位执行异或操作。独家或通常缩写为XOR。
^( XOR )的示例:
00000010 ^ //2
00000101 = //5
--------
00000111 //7
如果你进入一个按位运算符,我建议你得到一支笔和纸,想象两个随机的8位数字并将它们全部写在纸上(所有按位操作)。然后你可以找到一个程序员计算器并查看你的结果。