我在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?
答案 0 :(得分:5)
第一个运算符&&
是逻辑运算符,表示:
(另请注意return/result
logical
运算符的AND
始终为true
或false
,它不能像24或所以!)
true = true && true
false = false && true
false = true && false
false = false && false
因此,在您的情况下y
获取1
,因为33
和45
都是真的!因为如果数字是non-zero
数字,则表示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));