for loop. Today we will look at some for loop idioms.Infinite loop If you omit the initialization, condition and action expressions, you get an infinite loop:
for (;;) {
NSLog(@":-)");
}Missing loop expression Sometimes, there's no need to initialize a variable before looping, so the initialization expression is omitted:
char *process_line(char *buffer) {
for ( ; *buffer != '\n'; buffer++) {
/* do something with characters */
}
return buffer;
}Similarly the condition or action expressions are sometimes omitted.Nested loops When building or processing tables of information, put one
for loop inside another:for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
NSLog(@"%d X %d = %d", i, j, i * j);
}
}Parallel iteration You can use multiple loop counter variables by using the comma (
,) operator to squeeze multiple expressions into initialization and action: int i, j;
for (i = 0, j = 9; i < 10; i++, j--) {
destination[i] = source[j];
}There's a gotcha with the initialization expression however: only one loop counter variable can be declared there. It seems logical to do this:
for (int i = 0, int j = 9; i < 10; i++, j--) ...but unfortunately you can only do this:
int j; for (int i = 0, j = 9; i < 10; i++, j--) ...
Next week, we'll look at the Objective-C 2.0
for...in loop.









No comments:
Post a Comment