Swift — поведение UInt

Используя мой 64-битный Mac (Macbook Pro 2009), этот код на игровой площадке Xcode ведет себя странно:

let var1 = UInt32.max // 4,294,967,295
let var2 = UInt64.max // -1 --> why?
var var3: UInt = UInt.max // -1 --> why?
var3 = -1 // generates an error. 

установка var3 на -1 должна вызвать ошибку. Но в строке объявления он стал равен -1.


person Milad    schedule 19.01.2016    source источник
comment
Вы хотите сказать, что игровая площадка позволяет вам написать var3 = -1, не сообщая об ошибке?   -  person Cristik    schedule 19.01.2016
comment
@Cristic Нет, как я написал в 4-й строке кода, это действительно вызывает ошибку. Но я не уверен, почему компилятор устанавливает его в -1 в строке 3.   -  person Milad    schedule 19.01.2016
comment
Я думаю, что это просто ошибка в представлении беззнакового 64-битного целого числа в молитвенном поле, которое, вероятно, интерпретируется как знаковое. Если вы добавите print(var2), вы увидите правильное напечатанное число.   -  person 0x416e746f6e    schedule 19.01.2016


Ответы (1)


По-видимому, это просто ошибка в быстрой игровой площадке, и, по словам @Anton, печать переменных показывает правильное значение.

введите здесь описание изображения

person Milad    schedule 19.01.2016