Here Is The Code:
char a = a; is a self-initialization, which is basically the same as no initialization at all. Therefore, the value of a is undefined. In practice, value is determined by is whatever happened to be stored in memory at the location of the variable before.
The numerical value of the letter a in ASCII or Unicode is 97. The number 8 is just arbitrary garbage. The compiler would, if it respected itself, give you a compile time error, not just a warning.
As things are, you probably didn't even get a warning -.-