C Tutorial/Operator/Logic Operators
Содержание
Boolean Operator in C
Character Set Boolean Operator && and || or
&& Operator
- && operator: evaluate a Boolean expression from left to right.
- Both sides of the operator must evaluate to true before the entire expression becomes true.
|| Operator
- || operator: evaluate from left to right.
- If either side of the condition is true, the whole expression results in true.
Logical AND (&&) returns a true value if both relational expressions are true.
Logical OR (||) returns true if any of the expressions are true.
Negations(!) return complements of values of relational expressions.
R1 R2 R1 && R2 R1 || R2 ! R1 T T T T F T F F T F F T F T T F F F F T
- Logical operators AND, and OR have higher priority than assignment operators.
- Logical operators AND, and OR have lower priority than relational operators.
- Negation operators have the same priority as unary operators.
Logical operator
You can combine multiple relations or logical operations by logical operation.
The logical operators are negation (!), logical AND (&&), and logical OR (||),
<source lang="cpp">#include<stdio.h>
main(){
int c1 = 1,c2 = 2,c3 = 3; if((c1 < c2) && (c1<c3)){ printf("\n c1 is less than c2 and c3"); } if (!(c1< c2)){ printf("\n c1 is greater than c2"); } if ((c1 < c2)||(c1 < c3)){ printf("\n c1 is less than c2 or c3 or both"); }
}</source>
c1 is less than c2 and c3 c1 is less than c2 or c3 or both
Short circuiting
When evaluating logical expressions, C uses the technique of short circuiting.
<source lang="cpp">C1 && C2 && C3 && C4</source>
Ternary operator
Ternary operators return values based on the outcomes of relational expressions.
The general form of the ternary operator is:
<source lang="cpp">(expr 1) ? expr2 : expr3</source>
Testing letters with logic operator and (&&)
<source lang="cpp">#include <stdio.h> int main(void) {
char letter =0; printf("Enter an upper case letter:"); scanf(" %c", &letter); if ((letter >= "A") && (letter <= "Z")) { letter += "a"-"A"; printf("You entered an uppercase %c.\n", letter); } else printf("You did not enter an uppercase letter.\n"); return 0;
}</source>
Enter an upper case letter:R You entered an uppercase r.
The || is the logical OR operator.
<source lang="cpp">#include <stdio.h>
int main() {
char c; printf("Y/y?"); c=getchar(); if(c=="Y" || c=="y") { printf("Bye!\n"); } else { printf("Okay!\n"); } return(0);
}</source>
Y/y?1 Okay!