2016-01-19 3 views
1

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

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.

+0

Вы говорите, площадка позволяет писать 'var3 = -1' без сообщения об ошибке? – Cristik

+0

@Cristik Нет, как я написал в 4-й строке кода, он вызывает ошибку. Но я не уверен, почему компилятор устанавливает его в '-1' в строке 3. – Milad

+2

Я думаю, что это всего лишь ошибка в представлении молитвы неподписанного 64-битного целого числа, которое, вероятно, интерпретируется как подписанное. Если вы добавите 'print (var2)', вы увидите правильный номер. – courteouselk

ответ

2

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

enter image description here

Смежные вопросы