我是C的新手,我正在查看一些示例代码,我不确定if语句中的这些运算符是什么“问”,所以说。
以下是代码:
int main(void){
int a = 99;
int b = 0;
int c = 74;
if( a || b )
printf("first\n");
else
printf("second\n");
if( a && c )
printf("third\n");
else
printf("fourth\n");
if( !a )
printf("fifth\n");
else
printf("sixth\n");
if( (a && b) || c )
printf("seventh\n");
else
printf("eighth\n");
if( !c || !b )
printf("nineth\n");
else
printf("tenth\n");
}
我知道运营商的意思,我只是不明白当他们通过“if”语句时会发生什么。有人可以向我解释一下吗?
答案 0 :(得分:1)
回答这个问题的关键是实现C如何处理参与逻辑运算的整数:
FALSE
TRUE
以下是您的代码段中三个运算符的真值表:
!FALSE -> TRUE
!TRUE -> FALSE
FALSE || FALSE -> FALSE
FALSE || TRUE -> TRUE
TRUE || FALSE -> TRUE
TRUE || TRUE -> TRUE
FALSE && FALSE -> FALSE
FALSE && TRUE -> FALSE
TRUE && FALSE -> FALSE
TRUE && TRUE -> TRUE
如果在没有括号的表达式中使用多个运算符,则在二进制!
或&&
之前应用一元||
。
现在你有足够的信息来自己弄清楚输出。
答案 1 :(得分:0)
他们只是普通的运营商:
|| = or
&& = and
! = not
因此...
if( a || b )
printf("first\n");
说...
if a or b then print "first"
和...
if ( !a )
时...
if not a
相当于:
if a is equal to 0 or NULL
真的很基本的东西!
答案 2 :(得分:0)
如果使用bool类型的变量,可能更容易学习布尔运算符。我发现布尔检查在处理int时不太有用,因为将数字视为真或假是不常见的。对于int,您通常会考虑它们的数值,这在布尔逻辑中没有意义