2013-12-03 3 views
0

Я делал это вездеКак объединить целое число со знаком до нуля?

NSInteger myint = -3; 

// ... 

NSUInteger myuint = myint >= 0 ? myint : 0; 

Есть функция математики в Objective C, что может сделать то же самое, не используя трехкомпонентную/условное назначение? Что-то вроде этого:

NSUInteger myuint = rounduptozero(myint); 

ответ

2

Либо использование:

NSUInteger myuint = MAX(myint, 0); 

или определить собственную rounduptozero функцию:

NSUInteger rounduptozero(NSInteger val) { 
    return MAX(val, 0); 
} 

NSUInteger myuint = rounduptozero(mint); 
+0

Почему я не могу использовать выражение как один из параметров, например 'MAX (myint1 - myint2, 0)'? Это просто дает мне «NSNotFound». – zakdances

+0

Вы можете это сделать. Почему ты не думаешь, что можешь? – rmaddy

+0

Когда я пытаюсь это сделать, он дает мне значение «NSNotFound». Но когда я объявляю то же выражение, что и переменная, он работает нормально. – zakdances

0

MAX определяется в Objective-C во время выполнения (более конкретно, это в NSObjCRuntime, который включен в структуру Foundation), поэтому вы можете безопасно использовать MAX (значение, 0).

Если вы используете его повсюду, я бы предложил обернуть этот макрос в вашем собственном (или в функции) для ясности.

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