admin管理员组

文章数量:1026989

The @intCast() causes undefined behavior when the target type cannot hold the resulting value. Is there something like @safeIntCast() or a similar function which would return CastError!anytype?

The @intCast() causes undefined behavior when the target type cannot hold the resulting value. Is there something like @safeIntCast() or a similar function which would return CastError!anytype?

Share Improve this question asked Nov 17, 2024 at 13:46 VerfinVerfin 256 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 2

std.math has a number of functions for safe casting:

  • pub fn cast(comptime T: type, x: anytype) ?T

Cast an integer to a different integer type. If the value doesn't fit, return null.

  • pub fn lossyCast(comptime T: type, value: anytype) T

Cast a value to a different type. If the value doesn't fit in, or can't be perfectly represented by, the new type, it will be converted to the closest possible representation.

  • pub fn negateCast(x: anytype) !std.meta.Int(.signed, @bitSizeOf(@TypeOf(x)))

Returns the negation of the integer parameter. Result is a signed integer.

The @intCast() causes undefined behavior when the target type cannot hold the resulting value. Is there something like @safeIntCast() or a similar function which would return CastError!anytype?

The @intCast() causes undefined behavior when the target type cannot hold the resulting value. Is there something like @safeIntCast() or a similar function which would return CastError!anytype?

Share Improve this question asked Nov 17, 2024 at 13:46 VerfinVerfin 256 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 2

std.math has a number of functions for safe casting:

  • pub fn cast(comptime T: type, x: anytype) ?T

Cast an integer to a different integer type. If the value doesn't fit, return null.

  • pub fn lossyCast(comptime T: type, value: anytype) T

Cast a value to a different type. If the value doesn't fit in, or can't be perfectly represented by, the new type, it will be converted to the closest possible representation.

  • pub fn negateCast(x: anytype) !std.meta.Int(.signed, @bitSizeOf(@TypeOf(x)))

Returns the negation of the integer parameter. Result is a signed integer.

本文标签: castingHow to safely cast integer in zigStack Overflow