J'ai essayé de vérifier si un NSInteger est impair ou pair. J'ai trouvé un moyen de le faire en utilisant C mais cela ne fonctionne pas avec Objective-C. Comment je ferais ça?
Réponses
Trop de publicités?
ohho
Points
17243
NSInteger n = 5;
NSLog(@"%s", n & 1 ? "odd" : "even");
ou en utilisant si
if (n & 1) {
; // odd
} else {
; // even
}
avec quelques sorties:
if (n & 1) {
NSLog(@"odd");
} else {
NSLog(@"even");
}
l'exemple de pointeur:
NSInteger x = 7;
NSInteger *y = &x;
if (*y & 1) {
NSLog(@"odd");
} else {
NSLog(@"even");
}
paxdiablo
Points
341644
Autant que je sache. NSInteger
, contrairement à NSNumber
, est juste un typeder à un type entier réel le long des lignes de:
typedef long NSInteger;
Donc, vous devriez pouvoir faire:
NSInteger nsintvar = 77;
if ((nsintvar % 2) == 0) {
// number is even
} else {
// number is odd
}
Voici un programme complet, compilé sous Cygwin avec GNUstep, qui l’illustre:
#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;
}
Il produit:
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
Cameron
Points
66