我要评估在C以下布尔表达式:如何评估C中的布尔表达式?
f = (b+c')(a'+c')(a+b'+c)
这是我的当前程序:
#include <stdio.h>
int main()
{
int a,b,c,f;
a=0;b=1;c=1;
f=((b|(~c))&((~a)|(~c))&(a|(~b)|c));
printf("%d\n",f);
}
该函数应返回1,因为A = 0,B = 1和c = 1但它返回-1。 而且,当a = 1,B = 1和c = 1它返回-2而不是0
为什么发生这种情况?我该如何解决它?
*布尔*用C语义是通过运营商提供的'!','||'和''&&。运算符'〜',''''和'&'实现*按位*语义,这是完全不同的事情。 – AnT
请注意,C也有一个布尔类型,如果你想明确地说明你正在处理布尔类型,你不必使用* int *。 – hyde