なんとなくZigを触っているのですが、ビットシフト演算が独特の挙動で面白かったです。 const n: u8 = 0b00000001; const shifted: u8 = n << 1; std.debug.print("{b}\n", .{shifted}); // => 0b00000010 これは直感的なコードでしょう。n が1バイト左にシフトしています。 さて以下のコードはどうでしょうか。 const n: u8 = 0b00000001; const shifted: u8 = n << 8; std.debug.print("{b}\n", .{shifted}); // expects 0, but... このコードは ./main.zig:5:30: error: integer value 8 cannot be coerced to type 'u3' const