# Logical AND OR and NOT

- Logical AND is &&
- Logical OR is ||
- Logical NOT is !

## Logical AND

In simple terms, && is true (1) if both sides of the expression returns NOT 0.

For Example:

    	/* These all return TRUE (1) */

    	if (4 && 5) return();

    	i=3;
    	j=2;
    	return( i && j);

The expression is evaluated 'Left to Right' If any part of the expression returns ZERO - The evaluation ends.

THIS CAN CAUSE SERIOUS PROBLEMS.

For example:

    	k=0;
    	i=3;
    	j=2;
    	if ( i-i && j++) k=1

The left side (i-i) resolves to 0, so j is not incremented and k is not changed.

## Logical OR

OR also evaluates 'Left to Right' and will stop when an expression returns true.

SO WATCH YOUR BACK....

    	k=0;
    	i=3;
    	j=2;
    	if ( i+i && j++) k=1

What are j and k going to be when this code is executed?????

## Logical NOT

NOT reverses the logical state of its operand. If the operand is 0, 1 is returned, else 0 is returned.

    	!4	/* Returns 0	*/
    	!-4	/* Returns 0	*/
    	!1	/* Returns 0	*/
    	!0	/* Returns 1	*/

Top | Master Index | Keywords | Functions