Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
De logiska operatorerna utför åtgärder för logisk AND (&&) och logisk-OR (||).
Syntax
logical-AND-expression:
inclusive-OR-expression
logical-AND-expression
&&
inclusive-OR-expression
logical-OR-expression:
logical-AND-expression
logical-OR-expression
||
logical-AND-expression
Anmärkningar
Logiska operatorer utför inte de vanliga aritmetiska konverteringarna. I stället utvärderar de varje operande när det gäller dess motsvarighet till 0. Resultatet av en logisk åtgärd är antingen 0 eller 1. Typen av resultat är int.
De logiska C-operatorerna beskrivs nedan:
| Operatör | Beskrivning |
|---|---|
&& |
Operatorn logical-AND genererar värdet 1 om båda operanderna har icke-nollvärden. Om någon av operanderna är lika med 0 blir resultatet 0. Om den första operanden för en logisk-AND-åtgärd är lika med 0 utvärderas inte den andra operanden. |
|| |
Operatorn logical-OR utför en inclusive-OR-åtgärd på sina operander. Resultatet är 0 om båda operanderna har 0 värden. Om någon av operanderna har ett värde som inte är noll blir resultatet 1. Om den första operanden för en logisk-OR-åtgärd har ett icke-nollvärde utvärderas inte den andra operanden. |
Operanderna för logiska och logiska-OR-uttryck utvärderas från vänster till höger. Om värdet för den första operanden är tillräckligt för att fastställa resultatet av åtgärden utvärderas inte den andra operanden. Den här effekten kallas "kortslutningsutvärdering". Det finns en sekvenspunkt efter den första operanden i uttrycket. Mer information finns i Sekvenspunkter.
Exempel
Följande exempel illustrerar de logiska operatorerna:
int w, x, y, z;
if ( x < y && y < z )
printf( "x is less than z\n" );
I det här exemplet printf anropas funktionen för att skriva ut ett meddelande om x det är mindre än y och y är mindre än z. Om x är större än yutvärderas inte den andra operanden (y < z) och ingenting skrivs ut. Det är ett annat fall av kortslutningsutvärdering som måste beaktas när logiska jämförelser skrivs. Annars kan det orsaka problem om koden förlitar sig på biverkningarna av att utvärdera den andra operanden.
printf( "%d" , (x == w || x == y || x == z) );
I det här exemplet, om x är lika med antingen w, yeller z, utvärderas det andra argumentet till printf funktionen till true och värdet 1 skrivs ut. Annars utvärderas värdet till false och värdet 0 skrivs ut. Så snart ett av villkoren utvärderas till sant upphör utvärderingen.