Geo*_*rge 9 types operands swift
在C中,我可以用数字做一个技巧:
uint8_t value = 0
int delta = -1
uint8_t result = value + delta /* result will be 0xFF */
Run Code Online (Sandbox Code Playgroud)
有没有办法在Swift中做同样的事情?请注意,相同的方法不起作用:
let value: UInt8 = 0
let delta: Int = -1
var result: UInt8 = value + delta // Error, even typecasting in different ways...
Run Code Online (Sandbox Code Playgroud)
有没有办法在Swift中获得C的减法行为?
谢谢!
Mar*_*n R 23
所有有符号和无符号整数类型都有一个bitPattern:
构造函数,它使用相同的内存表示从带符号(或反之亦然)创建无符号数:
let delta: Int8 = -1
let result: UInt8 = UInt8(bitPattern: delta) // 0xFF = 255
Run Code Online (Sandbox Code Playgroud)
(我认为你的例子有点偏离.0 - -1
是1.我相信这个答案正是你所想的).
您希望选择与&-
运营商进行溢出:
let value: UInt8 = 0
let delta: UInt8 = 1
let result: UInt8 = value &- delta
Run Code Online (Sandbox Code Playgroud)
还有类似的事情,你可以与其他做&
运营商一样&+
,&*
等等.甚至还有一个&/
由零处理鸿沟.
归档时间: |
|
查看次数: |
5342 次 |
最近记录: |