In C, I am able to do a trick with numbers:
uint8_t value = 0
int delta = -1
uint8_t result = value + delta /* result will be 0xFF */
Is there a way of doing the same in Swift? Notice that the same approach doesn't work:
let value: UInt8 = 0
let delta: Int = -1
var result: UInt8 = value + delta // Error, even typecasting in different ways...
Is there a way to get C's behaviour for substraction in Swift?
Thanks!
All signed and unsigned integer types have a
bitPattern:
constructor, which creates an unsigned number from a signed (or vice versa) with the same memory representation:(I think your example is a little off.
0 - -1
is 1. I believe this answer is what you were thinking of, though).You want to opt-into overflow with the
&-
operator:There are similar things you can do with the other
&
operators like&+
,&*
, etc. There's even a&/
that handles divide by zero.