According to cppreference:
If the type of expression is a variable-length array type, expression is evaluated and the size of the array it evaluates to is calculated at run time.
It means: if the type of expression is a VLA type, then expression is evaluated. For example:
#include <stdio.h>
int main() {
int i = 0;
int a[i];
printf("%zu\n",sizeof(a[i++]));
printf("%d\n",i); // Here, print 0 instead of 1
return 0;
}
So, according to the reference, here i becomes 1. But, with my GCC compiler, i prints as 0.
See Wandbox Demo.
a[i++]is not an expression of a VLA type. It's ultimately a subscript expression, and has the typeint. Beyond that, even for VLA'sa[0]is a constraint violation.