//ww:run-exit 48 package main; type t = struct { s: int, u: size, n: i64, m: i64 }; fn ands(ts: *[]t, i: size) void = { (*ts)[i].m &= 6; }; fn xors(ts: *[]t, i: size) void = { (*ts)[i].m ^= 3; }; fn sars(ts: *[]t, i: size) void = { (*ts)[i].s >>= 2; }; fn shrs(ts: *[]t, i: size) void = { (*ts)[i].u >>= 1; }; export fn main() i32 = { let ts: []t = []; append(ts, t { s = -16, u = 8, n = 0, m = 7 }); ands(&ts, 0); if (ts[0].m != 6) { return 1; }; xors(&ts, 0); if (ts[0].m != 5) { return 2; }; sars(&ts, 0); if (ts[0].s != -4) { return 3; }; shrs(&ts, 0); if (ts[0].u != 4) { return 4; }; return 48; };