This is the code,
#include <stdio.h>                                                                                                                     
int main()
{
    unsigned int i = 0xFFFFFFFF;
    if (i == -1)
        printf("signed variable\n");
    else
        printf("unsigned variable\n");
    return 0;
}
This is the output,
signed variable
Why is i's value -1 even it is declared as unsigned?
Is it something related to implicit type conversations?
This is the build environment,
Ubuntu 14.04, GCC 4.8.2
 
     
    