objective c - por - Comprobando si un NSInteger es par o impar
numeros pares e impares para niños (6)
Esas otras respuestas deberían funcionar. Tal vez sea un problema con tu makefile o algo así. Piense fuera de ese pedazo de código.
Si todo lo demás falla, simplemente declare el entero como un int. No tienes que declararlo como NSInteger.
He estado intentando comprobar si un NSInteger es par o impar. He encontrado una forma de hacerlo utilizando C, pero no funciona con Objective-C. ¿Cómo haría esto?
Por lo que yo sé. NSInteger
, a diferencia de NSNumber
, es solo un tipificador para un tipo entero real a lo largo de las líneas de:
typedef long NSInteger;
Así que deberías poder hacer:
NSInteger nsintvar = 77;
if ((nsintvar % 2) == 0) {
// number is even
} else {
// number is odd
}
Aquí hay un programa completo, compilado bajo Cygwin con GNUstep, que lo ilustra:
#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;
}
Produce:
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
Utilice el operador "%". Esencialmente, funciona el resto cuando se divide un número. Asi que:
Número 2
Sería = 0 si el número fuera par, ya que un número par dividido por 2 no tiene residuos. Si no es = 0, debe ser impar.
NSInteger
se define como int
(o long
en algunos entornos). Por lo tanto, verificar la rareza es como para int simple:
NSInteger num;
if (num % 2)
// odd
else
// even
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]);
Espero eso ayude !!!
NSInteger n = 5;
NSLog(@"%s", n & 1 ? "odd" : "even");
o usando si
if (n & 1) {
; // odd
} else {
; // even
}
con alguna salida:
if (n & 1) {
NSLog(@"odd");
} else {
NSLog(@"even");
}
el ejemplo de puntero
NSInteger x = 7;
NSInteger *y = &x;
if (*y & 1) {
NSLog(@"odd");
} else {
NSLog(@"even");
}