4.74 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    
    }
}

Note

Unlike in C++, you cannot introduce new declarations in a for-test, if-test or switch-expression.
Related concepts
4.62 New language features of C99
4.64 // comments in C99 and C90
4.65 Compound literals in C99
4.66 Designated initializers in C99
4.67 Hexadecimal floating-point numbers in C99
4.68 Flexible array members in C99
4.69 __func__ predefined identifier in C99
4.70 inline functions in C99
4.71 long long data type in C99 and C90
4.72 Macros with a variable number of arguments in C99
4.73 Mixed declarations and statements in C99
4.75 _Pragma preprocessing operator in C99
4.76 Restricted pointers in C99
4.78 Complex numbers in C99
Non-ConfidentialPDF file icon PDF versionARM DUI0375E
Copyright © 2007, 2008, 2011, 2012, 2014 ARM. All rights reserved.