no, it does:
Yes, it doesn't. Are we having fun yet?
FWIW, I just tested on an up-to-date Jessie system, running GCC 4.9.2, and it rejects shown below:
$ printf "#include <stdio.h>\nint main(void) { for (int i=1; i<5; i++); }\n" | gcc -xc -
<stdin>: In function 'main':
<stdin>:2:18: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
<stdin>:2:18: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
$
Note, of course, that version of OS really isn't the variable; the variable is version of GCC.
Anyway, it turns out to be rather difficult to answer the simple question: What is the default standard for my version of GCC? That is, there's no good "system" way to do it; you have to check the documentation.
The following comes close (so solving our over-arching problem):
$ gcc -dM -E - < /dev/null | grep STDC
#define __STDC_HOSTED__ 1
#define __STDC_IEC_559__ 1
#define __STDC_ISO_10646__ 201103L
#define __STDC_NO_THREADS__ 1
#define _STDC_PREDEF_H 1
#define __STDC_IEC_559_COMPLEX__ 1
#define __STDC__ 1
$
The variable that should be there, but isn't, is __STDC_VERSION__, as shown in the next example:
$ gcc -std=gnu99 -dM -E - < /dev/null | grep STDC
#define __STDC_HOSTED__ 1
#define __STDC_UTF_16__ 1
#define __STDC_IEC_559__ 1
#define __STDC_ISO_10646__ 201103L
#define __GNUC_STDC_INLINE__ 1
#define __STDC_NO_THREADS__ 1
#define _STDC_PREDEF_H 1
#define __STDC_IEC_559_COMPLEX__ 1
#define __STDC_VERSION__ 199901L
#define __STDC_UTF_32__ 1
#define __STDC__ 1
$
If this post appears in the wrong forums category, my apologies.