gpt4 book ai didi

c - C 中整数的 bool 测试

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

以下内容在 C 中运行且不会发出警告:

int holding_variable = (-5 && 1);
int holding_variable = (1 && 1);
int holding_variable = (0 && 0);

但是以下给出警告(数字大于 1):

int holding_variable = (-5 && 2);
int holding_variable = (2 && 2);

警告示例如下:

$ gcc main.c -o main.out && ./main.out
main.c:66:28: warning: use of logical '&&' with constant operand [-Wconstant-logical-operand]
int holding_variable = (1 && -1);
^ ~~
main.c:66:28: note: use '&' for a bitwise operation
int holding_variable = (1 && -1);
^~
&
main.c:66:28: note: remove constant to silence this warning
int holding_variable = (1 && -1);
~^~~~~
1 warning generated.

是什么导致了上述两个类别的差异,为什么第一个类别会执行,而第二个类别则不会?

最佳答案

对于非 0 值为 true,如下所示

int main(){ 

int i;
for(i=-3;i<=3;i++){
if(i){
printf("True :%d\n",i);
}else{
printf("False :%d\n",i);
}
}

return 0;
}

因此,如果您不想使用 & 进行警告,则适合您的情况

因为 0 和 X 始终为 0

如果您只想要 0 或 1,请添加一个函数

int BeBool(int a){
if(a){
return 1;
}
return 0;
}
<小时/>

int Holding_variable = BeBool(2&2);

而是 int Holding_variable = (2 && 2);

<小时/>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int BeBool(int a){
if(a){
return 1;
}
return 0;
}

int main(){

int i;
for(i=-3;i<=3;i++){
if(i){
printf("True :%d\n",i);
}else{
printf("False :%d\n",i);
}
}
int holding_variable = BeBool(2&2);
printf("Value :%d\n",holding_variable);
return 0;
}

关于c - C 中整数的 bool 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57779372/

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