Skip to content

Latest commit

 

History

History
49 lines (45 loc) · 1.64 KB

Logical.md

File metadata and controls

49 lines (45 loc) · 1.64 KB

Logical Operators

Logical operators allow joining multiple boolean expressions. Like C/C++ and Java, the && and || operators provide for logical-and and logical-or. Both operators have short-circuit evaluation; they only evaluate the right-hand-side expression if the left-hand-side evaluates to true or false, respectively.

// with declared type
var a: bool = false && false; // == false
var b: bool = false && true;  // == false
var c: bool = true && false;  // == false
var d: bool = true && true;   // == true
// with inferred type
var e = false && false; // == false
var f = false && true;  // == false
var g = true && false;  // == false
var h = true && true;   // == true
// with declared type
var a: bool = false || false; // == false
var b: bool = false || true;  // == true
var c: bool = true || false;  // == true
var d: bool = true || true;   // == true
// with inferred type
var e = false || false; // == false
var f = false || true;  // == true
var g = true || false;  // == true
var h = true || true;   // == true
def doAnd() {
    var a = print( 2) && print( 3); // == true  ; prints 2 3
    var b = print( 4) && print(-6); // == false ; prints 4 -6
    var c = print(-7) && print( 5); // == false ; prints -7
    var d = print(-8) && print(-9); // == false ; prints -8
}
def doOr() {
    var a = print( 2) || print( 3); // == true ; prints 2
    var b = print( 4) || print(-6); // == true ; prints 4
    var c = print(-7) || print( 5); // == true ; prints -7 5
    var d = print(-8) || print(-9); // == false ; prints -8 -9
}
def print(x: int) -> bool {
    System.puti(x);
    System.puts("\n");
    return x > 0;
}