// 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;
}这个程序是如何工作的?逻辑运算符和按位运算符是如何工作的?
发布于 2017-06-06 10:47:46
在这个程序中,&是一个按位运算符,它将在2和5上执行按位and操作。
0000 0010<=2
0000 0101<=5
0000 0000<=output因此,第一行将打印False,而第二行是正常的and运算符,两个值都为真(非零数),因此2 && 5将导致真,输出将为True。
发布于 2017-06-06 13:33:41
按位AND运算符是单个“与”符号:&。一个方便的助记符是,布尔AND的小版本&&处理较小的片段(位而不是字节、字符、整数等)。本质上,二进制AND只取二进制形式的数的每个位置的位的逻辑与。
&(和)的示例:
00000010 & //2
00000101 = //5
--------
00000000 // 0按位OR的工作方式与按位AND几乎完全相同。唯一的区别是,两位中只有一位需要是1,结果中该位置的位就是1。(如果两位都是1,则结果在该位置也会有1。)符号是一个竖线:|。同样,这类似于布尔逻辑运算符,即||。
|(或)示例:
00000010 | //2
00000101 = //5
--------
00000111 //7没有与按位异或相对应的布尔运算符,但有一个简单的解释。异或操作接受两个输入,如果其中一个输入是1,则返回1,但如果两个输入都是1,则不返回1。也就是说,如果两个输入都为1或两个输入都为0,则返回0。使用插入符号^的位异或运算,对每一对位执行异或操作。异或通常缩写为XOR。
^(异或)的示例:
00000010 ^ //2
00000101 = //5
--------
00000111 //7如果你开始使用按位运算符,我建议你拿一支笔和一张纸,想象两个随机的8位数字,然后把它们都写在纸上(所有的按位运算)。然后你可以找到一个程序员计算器,并检查你的结果。
https://stackoverflow.com/questions/44380487
复制相似问题