Подтвердить что ты не робот

Проверка того, является ли NSInteger нечетным или даже

Я пытаюсь проверить, является ли NSInteger нечетным или четным. Я нашел способ сделать это с помощью C, но он не работает с Objective-C. Как мне это сделать?

4b9b3361

Ответ 1

NSInteger определяется как int (или long в некоторых средах). Таким образом, проверка нечетности похожа на обычный int:

NSInteger num;
if (num % 2)
  // odd
else
  // even

Ответ 2

NSInteger n = 5;

NSLog(@"%s", n & 1 ? "odd" : "even");

или используя if

if (n & 1) {
  ; // odd
} else {
  ; // even
}

с некоторым выходом:

if (n & 1) {
  NSLog(@"odd");
} else {
  NSLog(@"even");
}

пример указателя:

NSInteger x = 7;
NSInteger *y = &x;

if (*y & 1) {
    NSLog(@"odd");
} else {
    NSLog(@"even");
}

Ответ 3

Насколько мне известно. NSInteger, в отличие от NSNumber, является просто типером для реального целочисленного типа по строкам:

typedef long NSInteger;

Итак, вы должны уметь:

NSInteger nsintvar = 77;
if ((nsintvar % 2) == 0) {
    // number is even
} else {
    // number is odd
}

Здесь представлена ​​полная программа, скомпилированная под Cygwin с GNUstep, которая иллюстрирует это:

#import <stdio.h>
#import <Foundation/NSObject.h>

int main( int argc, const char *argv[] ) {
    NSInteger num;
    for (num = 0; num < 20; num++) {
        if ((num % 2) == 0) {
            printf ("%d is even\n", num);
        } else {
            printf ("%d is odd\n", num);
        }
    }
    return 0;
}

Он выводит:

0 is even
1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even
11 is odd
12 is even
13 is odd
14 is even
15 is odd
16 is even
17 is odd
18 is even
19 is odd

Ответ 4

Эти другие ответы должны работать. Может быть, это проблема с вашим make файлом или чем-то еще. Подумайте о том, что часть кода.

Если все остальное не работает, просто объявите целое число как int. Вам не нужно объявлять его как NSInteger.

Ответ 5

Используйте оператор "%". По сути, он работает над остатком, когда вы делите число. Итак:

число% 2

Было бы = 0, если бы число было четным, так как четное число, деленное на 2, не имеет остатков. Если он не равен 0, он должен быть нечетным.

Ответ 6

NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", nil];
// NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", @"B", nil];
// NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", @"B", @"C", nil];
// NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", nil];
// NSArray *arrayTotal = [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", nil];

NSArray *arrLeft;
NSArray *arrRight;

NSRange range;
range.location = 0;
range.length = ([arrayTotal count] % 2) ? ([arrayTotal count] / 2) + 1 : ([arrayTotal count] / 2);

arrLeft = [arrayTotal subarrayWithRange:range];

range.location = range.length;
range.length = [arrayTotal count] - range.length;

arrRight = [arrayTotal subarrayWithRange:range];

NSLog(@"Objects: %lu", (unsigned long)[arrLeft count]);
NSLog(@"%@", [arrLeft description]);

NSLog(@"Objects: %lu", (unsigned long)[arrRight count]);
NSLog(@"%@", [arrRight description]);

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