我在 c: 中创建了一个简单的程序
int y=33, x=45;
y = y && x;
printf("%d\n",y);
y = y & x;
printf("%d\n",y);
输出是1和1。但是如果我用计算器,它显示x和y是33。为什么它变成1?
最佳答案
第一个运算符&&
是一个逻辑运算符,其含义是:
(另请注意,逻辑
AND
运算符的返回/结果
始终为true
或false
,不能是 24 左右!)
true = true && true
false = false && true
false = true && false
false = false && false
因此,在您的情况下,y
得到 1
,因为 33
和 45
都是 true!因为如果一个数字是非零
数字,则表示true
。只有 0/false
表示 false
。甚至 -5
也表示 true
!
第二个运算符&
是按位与运算符,在您的情况下意味着:
(y = 1) 0000 0001 &
(x = 45) 0001 1101 =
---------
(y = 1) 0000 0001
等于1
,然后将其分配给y
这就是为什么两个结果都是 1!
如果你想计算 33
和 45
那么你必须将结果分配给像这样的其他变量(以便你的起始值(x,y)不不会被覆盖):
#include<stdio.h>
int main() {
int y = 33, x = 45, z;
z = y && x;
printf("%d\n", z);
z = y & x;
printf("%d\n", z);
return 0;
}
您也可以使用以下代码行进行此计算,而无需分配:
printf("%d\n", (y && x));
printf("%d\n", (y & x));
关于c - 在这种情况下 && 和 & 有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26759802/