does the automatic local variable are stored in the stack in C?
===

okay i know that main() automatic local variables are stored in the stack and also  any function automatic local variables too, but when i have tried the following code on gcc version 4.6.3   :

    #include <stdio.h>

        int main(int argc, char *argv[]) {

            int var1;
            int var2;
            int var3;
            int var4;
            printf("%p\n%p\n%p\n%p\n",&var1,&var2,&var3,&var4);
            }


the results are :

    0xbfca41e0
    0xbfca41e4
    0xbfca41e8
    0xbfca41ec

according to the results var4 on the top of the stack and var1 on the bottom of the stack and the stack pointer now pointing on the address below var1 address....but why var4 on the 
top of the stack and var1 on the bottom...its declared after var1 so i think logically that var1 should be on the top of the stack and any variable declared after var1 should be below
it in memory...so in my example like this:

    >>var1  at 0xbfca41ec
    >>var2  at 0xbfca41e8
    >>var3  at 0xbfca41e4
    >>var4  at 0xbfca41e0
    >>and stack pointer pointing here  
    ..
    ..
    