/* More constant expression tests */ proc main() { "Long & (1): ", 1L & 3L, "\n"; "Long | (3): ", 1L | 2L, "\n"; "Long ^ (6): ", 3L ^ 5L, "\n"; "Long << (2): ", 1L << 1L, "\n"; "Long >> (1): ", 2L >> 1L, "\n"; "\n"; "Int & (1): ", 1 & 3, "\n"; "Int | (3): ", 1 | 2, "\n"; "Int ^ (6): ", 3 ^ 5, "\n"; "Int << (2): ", 1 << 1, "\n"; "Int >> (1): ", 2 >> 1, "\n"; "\n"; "Bool & (true): ", true & true, "\n"; "Bool | (true): ", true | false, "\n"; "Bool ^ (true): ", false ^ true, "\n"; "\n"; "Str == (true): ", "true" == "true", "\n"; "Arr == (true): ", {1} == {1}, "\n"; "Flt == (true): ", 1.0 == 1.0, "\n"; "MixF == (true): ", 1.0 == 1, "\n"; "MixL == (true): ", 1.0 == 1L, "\n"; "Str != (true): ", "false" != "true", "\n"; "\n"; "Int <= (true): ", 1 <= 2, "\n"; "Int >= (false): ", 1 >= 2, "\n"; "Int < (true): ", 1 < 2, "\n"; "Int > (false): ", 1 > 2, "\n"; "\n"; "Long <= (true): ", 1L <= 2L, "\n"; "Long >= (false): ", 1L >= 2L, "\n"; "Long < (true): ", 1L < 2L, "\n"; "Long > (false): ", 1L > 2L, "\n"; "\n"; "Str <= (true): ", "1L" <= "2L", "\n"; "Str >= (false): ", "1L" >= "2L", "\n"; "Str < (true): ", "1L" < "2L", "\n"; "Str < (false): ", "1L" > "2L", "\n"; "\n"; "Bool ~ (true): ", ~false, "\n"; "Int ~ (-1): ", ~0, "\n"; "Long ~ (-1): ", ~0L, "\n"; "\n"; "Bool ! (true): ", !false, "\n"; "Int ! (true): ", !0, "\n"; "Flt ! (true): ", !0.0, "\n"; "Flt ! (true): ", ! -0.0, "\n"; "Long ! (true): ", !0L, "\n"; "Doub ! (true): ", !0.0D, "\n"; "Doub ! (true): ", ! -0.0D, "\n"; "Null ! (true): ", !nil, "\n"; "\n"; "Int - (-1): ", -(1), "\n"; "Flt - (-1): ", -(1.0), "\n"; "Long - (-1): ", -(1L), "\n"; "Doub - (-1): ", -(1.0D), "\n"; }