My code is:
const expect = @import("std").testing.expect;
var a: i8 = 127;
var b: i8 = 1;
test "test1" {
try expect(@as(i64, a + b) == 128);
}
test "test2" {
try expect(@as(i64, a) + @as(i64, b) == 128);
}
- Description: if i sum a and b then cast in “test1”, it will have a overflow panic. So i have to cast one by one to sum in “test2”.
- Question: This method is quite lengthy, is there a way to make it simpler? Thanks
You probably already know this, but the only way I know of to simplify it is to use a larger type, for example, i16
, instead of i8
for a
and b
, since the sum of 128 and 1 cannot be represented in an i8. Zig is very strict about type conversions and requires them to be explicit.
Edit: even using u8
would be sufficient.
1 Like
Yeah l thought about that, but i still hope another way that don’t need to change type of unnecessary variables.
It looks like if you cast the first value, the second one is coerced safely to the same type:
try expect(@as(i16, a) + b == 128);
This worked for me with version 0.10.0-dev.4217+9d8cdb855.
1 Like
that’s it!!! also with zig 0.9.1