5.75 New block scopes for selection and iteration statements in C99

In a for loop, the first expression can be a declaration, like in C++. The scope of the declaration extends to the body of the loop only.

For example:

extern int max;
for (int n = max - 1; n >= 0; n--)
    // body of loop

is equivalent to:

extern int max;
    int n = max - 1;
    for (; n >= 0; n--)
        // body of loop    


Unlike in C++, you cannot introduce new declarations in a for-test, if-test or switch-expression.

Related concepts
5.63 New language features of C99
5.65 // comments in C99 and C90
5.66 Compound literals in C99
5.67 Designated initializers in C99
5.68 Hexadecimal floating-point numbers in C99
5.69 Flexible array members in C99
5.70 __func__ predefined identifier in C99
5.71 inline functions in C99
5.72 long long data type in C99 and C90
5.73 Macros with a variable number of arguments in C99
5.74 Mixed declarations and statements in C99
5.76 _Pragma preprocessing operator in C99
5.77 Restricted pointers in C99
5.79 Complex numbers in C99
Non-ConfidentialPDF file icon PDF versionARM DUI0472J
Copyright © 2010-2013 ARM. All rights reserved.