Вернуть ноль или положительное число? - PullRequest
1 голос
/ 02 августа 2011

Я изначально думал, что приведенный ниже код вернет 0, мой вопрос, есть ли функция, которую я могу использовать, чтобы получать здесь только ноль / положительные результаты?

NSUInteger pruneSize = 5 - 20; // Returns: -15

В настоящее время я просто проверяюсам результат, но мне было интересно, если я пропустил что-то попроще.

NSUInteger pruneSize = 5 - 20;
if(pruneSize >= 0) {
    // Do zero/positive Stuff ...
}

Ответы [ 3 ]

7 голосов
/ 02 августа 2011

pruneSize >= 0 всегда верно, поскольку pruneSize не подписано. Вы должны получить предупреждение здесь. Вам необходимо изменить тип на NSInteger, то есть целое число со знаком. Если вы хотите обрезать нижнее значение до нуля для int со знаком, то вы можете сделать это:

NSInteger pruneSize = 5 - 20; // signed int
pruneSize = pruneSize < 0 ? 0 : pruneSize;
1 голос
/ 02 августа 2011

Вы можете использовать abs(pruneSize), который в любом случае вернет вам положительное или нулевое число.

EDIT:

NSUInteger pruneSize = 5-20;
if(pruneSize < 0)
{
     pruneSize = 0;
}
NSLog(@"%d",pruneSize);

Надеюсь, это поможет вам.

0 голосов
/ 02 августа 2011

Если вы хотите, чтобы ваша функция всегда возвращала ноль, если ваш результат отрицательный (меньше 0), то возвращайте ноль или же возвращайте результат

int n=0;
if(result > 0){ //positive
   n = result
else
   n = 0
return n

или используйте метод abs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...