mirror of
https://github.com/ziglang/zig.git
synced 2024-11-27 23:52:31 +00:00
2b395d4ede
closes #1466 closes #1476
37 lines
785 B
Zig
37 lines
785 B
Zig
const std = @import("std");
|
|
const assert = std.debug.assert;
|
|
const maxInt = std.math.maxInt;
|
|
|
|
test "@bitCast i32 -> u32" {
|
|
testBitCast_i32_u32();
|
|
comptime testBitCast_i32_u32();
|
|
}
|
|
|
|
fn testBitCast_i32_u32() void {
|
|
assert(conv(-1) == maxInt(u32));
|
|
assert(conv2(maxInt(u32)) == -1);
|
|
}
|
|
|
|
fn conv(x: i32) u32 {
|
|
return @bitCast(u32, x);
|
|
}
|
|
fn conv2(x: u32) i32 {
|
|
return @bitCast(i32, x);
|
|
}
|
|
|
|
test "@bitCast extern enum to its integer type" {
|
|
const SOCK = extern enum.{
|
|
A,
|
|
B,
|
|
|
|
fn testBitCastExternEnum() void {
|
|
var SOCK_DGRAM = @This().B;
|
|
var sock_dgram = @bitCast(c_int, SOCK_DGRAM);
|
|
assert(sock_dgram == 1);
|
|
}
|
|
};
|
|
|
|
SOCK.testBitCastExternEnum();
|
|
comptime SOCK.testBitCastExternEnum();
|
|
}
|