In the book \"Complete Reference of C\" it is mentioned that char is by default unsigned.
But I am trying to verify this with GCC as well as Visual Stud
The book is wrong. The standard does not specify if plain char is signed or unsigned.
In fact, the standard defines three distinct types: char, signed char, and unsigned char. If you #include and then look at CHAR_MIN, you can find out if plain char is signed or unsigned (if CHAR_MIN is less than 0 or equal to 0), but even then, the three types are distinct as far as the standard is concerned.
Do note that char is special in this way. If you declare a variable as int it is 100% equivalent to declaring it as signed int. This is always true for all compilers and architectures.