strlen (una matriz de caracteres no inicializada)
Debido a que no inicializó la matriz, cada elemento de la matriz es un valor aleatorio. El compilador inicializará el valor a 0 después de la enésima dirección al final de la matriz. El valor de n depende del compilador, por lo que si lo define. aa[1], en vc6, cambie el séptimo byte después de a[0] a 0. Si es 10, es decir, el quinto byte después de a[9], entonces su salida será 15, creo que esto también es un optimización realizada por el compilador para evitar el acceso ilegal a la memoria
Lo sabrás consultando el código de prueba que escribí
#include <stdio.h>
p>int main(void)
{ int n=8;
char aa[ 2];
for(int i=0; i printf("%d\n",aa[i]); return 0; }//aa matriz Cuanto mayor sea longitud, mayor será la n