2013-09-18 2 views
0

Я превращаю- CGFloat:Преобразование CGFloat в NSUInteger возвращает 0

CGFloat verticalTranslation = CGFLOAT_MAX; 

... к NSUInteger используя следующий код:

if (verticalTranslation > NSUIntegerMax) unsignedInteger = NSUIntegerMax; 
else unsignedInteger = verticalTranslation; 

Он работает. Однако, как только я заменяю if с тройным оператором, unsignedInteger становится 0:

NSUInteger unsignedInteger = verticalTranslation > NSUIntegerMax ? NSUIntegerMax : verticalTranslation; 

Почему unsignedInteger равно 0 и не NSUIntegerMax при использовании троичной версии?

+0

Я подозреваю, что вам может понадобиться явно привести verticalTranslation. –

ответ

2

Почему бы вам не попробовать:

NSUInteger unsignedInteger = verticalTranslation > NSUIntegerMax ? NSUIntegerMax : (NSUInteger)verticalTranslation; 
+0

Это работает. Благодаря! –

+0

-1 'NSUInteger' - это не то же самое, что' int', так что ваш новый литой int может переполняться и быть чем-то странным. – JustSid

+0

Отредактировано затем, спасибо –

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