Если вы хотите преобразовать целое число в целое число без знака, вы либо находитесь в ситуации, когда знаете, что целое число никогда не будет отрицательным, либо вам может потребоваться преобразовать все отрицательные значения в абсолютные значения (т. Е.значения без знака).Выполнить это преобразование в абсолютное значение просто:
NSInteger mySignedInteger = -100;
NSUInteger myUnsignedInteger = fabs(mySignedInteger);
fabs()
- это функция C, которая возвращает абсолютное значение для любого числа с плавающей запятой.Здесь myUnsignedInteger
будет иметь значение 100.
Возможные варианты использования такой функции будут отображаться, где вы будете указывать отрицательные значения в другом формате.Например, в бухгалтерском учете отрицательные числа отображаются в скобках:
NSString * numberForDisplay;
if (mySignedInteger < 0) {
numberForDisplay = [NSString stringWithFormat:@"(%lu)", myUnsignedInteger];
} else {
numberForDisplay = [NSString stringWithFormat:@"%lu", myUnsignedInteger];
}
Обратите внимание, что с технической точки зрения вы можете просто назначить NSInteger NSUInteger - это даже не требует приведения - но когдаNSInteger отрицателен, NSUInteger возвращает очень большое положительное число, что явно является крайне нежелательным побочным эффектом:
NSUInteger myUnsignedInteger = mySignedInteger;