gpt4 book ai didi

c - 在这种情况下 && 和 & 有什么不同?

转载 作者:行者123 更新时间:2023-11-30 19:58:30 25 4
gpt4 key购买 nike

我在 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 运算符的返回/结果始终为truefalse,不能是 24 左右!)

true  =  true  && true
false = false && true
false = true && false
false = false && false

因此,在您的情况下,y 得到 1,因为 3345 都是 true!因为如果一个数字是非零数字,则表示true。只有 0/false 表示 false。甚至 -5 也表示 true!

第二个运算符&是按位与运算符,在您的情况下意味着:

(y = 1)    0000 0001 & 
(x = 45) 0001 1101 =
---------
(y = 1) 0000 0001

等于1,然后将其分配给y

这就是为什么两个结果都是 1!

如果你想计算 3345 那么你必须将结果分配给像这样的其他变量(以便你的起始值(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com