Objective C “fare - mentre”
-
02-10-2019 - |
Domanda
L'esempio per uno degli esercizi nel libro che sto leggendo spettacoli il seguente codice:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int input, reverse, numberOfDigits;
reverse = 0;
numberOfDigits = 0;
NSLog (@"Please input a multi-digit number:");
scanf ("%i", &input);
if ( input < 0 ) {
input = -input;
NSLog (@"Minus");
}
do {
reverse = reverse * 10 + input % 10;
numberOfDigits++;
} while (input /= 10);
do {
switch ( reverse % 10 ) {
case 0:
NSLog (@"Zero");
break;
case 1:
NSLog (@"One");
break;
case 2:
NSLog (@"Two");
break;
case 3:
NSLog (@"Three");
break;
case 4:
NSLog (@"Four");
break;
case 5:
NSLog (@"Five");
break;
case 6:
NSLog (@"Six");
break;
case 7:
NSLog (@"Seven");
break;
case 8:
NSLog (@"Eight");
break;
case 9:
NSLog (@"Nine");
break;
}
numberOfDigits--;
} while (reverse /= 10);
while (numberOfDigits--) {
NSLog (@"Zero");
}
[pool drain];
return 0;
}
La mia domanda è questa, il tempo spettacoli economico (input / = 10), che, se ho capito bene fondamentalmente mezzi (input = input / 10). Ora, se questo è vero, perché non il ciclo basta eseguire continuamente? Voglio dire, anche se si dovesse dividere 0 da 10 che poi sarebbe ancora estrarre un numero. Se l'utente fosse all'ingresso "50607", sarebbe prima tagliare il "7", il "0", e così via e così via, ma perché lo fa uscire dal ciclo dopo aver rimosso il "5". Non sarebbe la risposta dopo il "5" è lo stesso del "0" tra il 5 e il 6 per il programma?
Soluzione
Ti sembra di essere confuso circa la differenza tra /
e %
. Quel ciclo sta dividendo input
e con il quoziente, non il resto. Per il vostro esempio di 50607
, il ciclo va 5 iterazioni:
-
input = 50607
-
input = 5060
-
input = 506
-
input = 50
-
input = 5
Dopo l'ultima iterazione, input
diventa 0
e il ciclo termina.