C#
provides three logical operators, These are &&(AND), || (OR), and
!(NOT)
Program.cs
Program.cs
Logical
AND is also called Conditional AND
Logical
OR is also called Conditional OR
Logical
AND, OR are called Short circuit operators, will see why these are called short
circuit soon.
Logical AND Operator
Operand1
|
Operand2
|
Evaluates To
|
TRUE
|
TRUE
|
TRUE
|
TRUE
|
FALSE
|
FALSE
|
FALSE
|
TRUE
|
FALSE
|
FALSE
|
FALSE
|
FALSE
|
Program.cs
using System; class Program { static void Main(string[] args) { bool operand1 = true; bool operand2 = true; Console.WriteLine("operand1 = {0}", operand1); Console.WriteLine("operand2 = {0}", operand2); Console.WriteLine("operand1 && operand2 = {0}", (operand1 && operand2)); operand1 = true; operand2 = false; Console.WriteLine("\noperand1 = {0}", operand1); Console.WriteLine("operand2 = {0}", operand2); Console.WriteLine("operand1 && operand2 = {0}",(operand1 && operand2)); operand1 = false; operand2 = true; Console.WriteLine("\noperand1 = {0}", operand1); Console.WriteLine("operand2 = {0}", operand2); Console.WriteLine("operand1 && operand2 = {0}", (operand1 && operand2)); operand1 = false; operand2 = false; Console.WriteLine("\noperand1 = {0}", operand1); Console.WriteLine("operand2 = {0}", operand2); Console.WriteLine("operand1 && operand2 = {0}", (operand1 && operand2)); } }
Output
operand1 = True operand2 = True operand1 && operand2 = True operand1 = True operand2 = False operand1 && operand2 = False operand1 = False operand2 = True operand1 && operand2 = False operand1 = False operand2 = False operand1 && operand2 = False
Why Logical AND is
called short circuit operator?
Since
if the first statement in the expression evaluates to false, then java won't evaluate
the entire expression. So Logical AND is called short circuit AND.
Program.cs
using System; class Program { static void Main(string[] args) { int a = 10, b = 21; if ((a > b) && (a++ > b)) { Console.WriteLine("This statement not evaluated"); } Console.WriteLine("a is not incremented " + a); if ((a < b) && (a++ < b)) { Console.WriteLine("This statement is evaluated"); } Console.WriteLine("a is incremented " + a); } }
Output
a
is not incremented 10
This
statement is evaluated
a
is incremented 11
Observation
In
the expression (a>b) && (a++ > b), a>b is false, so &&
operator won't evaluate second statement in the expression, so a is not
incremented.
Logical OR Operator
Operand1
|
Operand2
|
Evaluates
To
|
TRUE
|
TRUE
|
TRUE
|
TRUE
|
FALSE
|
TRUE
|
FALSE
|
TRUE
|
TRUE
|
FALSE
|
FALSE
|
FALSE
|
As
shown in the above table, || operator returns true if any of the operand
evaluates to true, otherwise returns false.
using System; class Program { static void Main(string[] args) { bool operand1 = true; bool operand2 = true; Console.WriteLine("operand1 = {0}", operand1); Console.WriteLine("operand2 = {0}", operand2); Console.WriteLine("operand1 || operand2 = {0}", (operand1 || operand2)); operand1 = true; operand2 = false; Console.WriteLine("\noperand1 = {0}", operand1); Console.WriteLine("operand2 = {0}", operand2); Console.WriteLine("operand1 || operand2 = {0}", (operand1 || operand2)); operand1 = false; operand2 = true; Console.WriteLine("\noperand1 = {0}", operand1); Console.WriteLine("operand2 = {0}", operand2); Console.WriteLine("operand1 || operand2 = {0}", (operand1 || operand2)); operand1 = false; operand2 = false; Console.WriteLine("\noperand1 = {0}", operand1); Console.WriteLine("operand2 = {0}", operand2); Console.WriteLine("operand1 || operand2 = {0}", (operand1 || operand2)); } }
Output
operand1 = True operand2 = True operand1 || operand2 = True operand1 = True operand2 = False operand1 || operand2 = True operand1 = False operand2 = True operand1 || operand2 = True operand1 = False operand2 = False operand1 || operand2 = False
Why Logical OR is
called short circuit operator?
Since
if the first statement evaluates to true, then java won't evaluates the entire
expression. So Logial OR is called short circuit OR.
using System; class Program { static void Main(string[] args) { int a = 10, b = 21; if ((a < b) || (a++ < b)) { Console.WriteLine("This statement evaluated"); } Console.WriteLine("a is not incremented " + a); if ((a > b) || (a++ > b)) { Console.WriteLine("This statement is evaluated"); } Console.WriteLine("a is incremented " + a); } }
Output
This
statement evaluated
a
is not incremented 10
a
is incremented 11
Logical (!)NOT
operator
Operand
|
Evaluates
To
|
FALSE
|
TRUE
|
TRUE
|
FALSE
|
If
the operand is FALSE, ! Operator evaluates it to TRUE
If
the operand is TRUE, ! Operator evaluates it to FALSE.
Program.cs
using System; class Program { static void Main(string[] args) { bool a = true; Console.WriteLine("a = {0}, !a = {1}", a, !a); a = false; Console.WriteLine("a = {0}, !a = {1}", a, !a); } }
Output
operand1 = True operand2 = True operand1 || operand2 = True operand1 = True operand2 = False operand1 || operand2 = True operand1 = False operand2 = True operand1 || operand2 = True operand1 = False operand2 = False operand1 || operand2 = False
No comments:
Post a Comment