C是否总是评估与&;有关的所有语句&;或||
我这里有一个非常简单的问题,但我找不到答案: 假设我有一个由几个条件组成的条件从句。比如说C是否总是评估与&;有关的所有语句&;或||,c,evaluation,C,Evaluation,我这里有一个非常简单的问题,但我找不到答案: 假设我有一个由几个条件组成的条件从句。比如说 if((a == b && strcmp(string1, string)) || x <= 5) 在本例中,如果a==5,则不需要进一步检查,因为big语句的结果为TRUE,因此我们可以继续。这意味着不会对someFun()求值 是这样吗?我知道Java在这方面对&&和&resp.||产生了影响和|(后者在C中无论如何都不可用),但我不知道C如何处理这些运算符在C(和C++)
if((a == b && strcmp(string1, string)) || x <= 5)
在本例中,如果a==5,则不需要进一步检查,因为big语句的结果为TRUE,因此我们可以继续。这意味着不会对someFun()求值
是这样吗?我知道Java在这方面对&&和&resp.||产生了影响和|(后者在C中无论如何都不可用),但我不知道C如何处理这些运算符在C(和C++)中。C在知道答案之前进行计算,因此: evalstorue()和&EvalsToAnything()同时计算这两个参数 evalstoalse()和&EvalsToAnything()只计算第一个 evalstorue()| | EvalsToAnything()只计算第一个
evalstovalse()| | EvalsToAnything()同时计算这两个值始终计算左侧表达式。右侧表达式的计算如下所示:
--a | | b
仅当b
的计算结果为a
false
--a和&b
仅当b
的计算结果为a
true
&&
的优先级高于|
,因此
--a | | b&c
仅当b&c
计算结果为a
false
--a&b|c
仅当c
计算结果为a&b
false
--(a | | b)和&c
只有在c
计算结果为a | | b
true时才会进行计算
--a&&(b|c)
仅当b|c
计算结果为a
true
--a&&b&&c
仅当c
计算为a&&b
true
--a|b|c
仅当c
计算为a|b
false
和&
都有C语言版本。
if(a == 5 || b > 12 || (c = someFun()) == 3)