When you write any letter in between single apostrophes, you refer them as a char. This means they can be referred to as a numeric value. In your case, 'A' refers to the ascii value of 65, while 'B' refers to 66 and 'C' refers to 67. The compiler then implicitly converts the int value into a char value where required, like in your case. See the example below:
int i = 99; // This ca be any number ranging from and including 65-90 and 97-122 (only for uppercase/lowercase letters)
char s = i; // Variable s is assigned a character at the ascii value stored in variable i
cout << s << endl; // Outputting s gives us the letter/character, outputting i gives the decimal value as an int.
NOTE: If you write "A", then this is a string, and not a char value. Your compiler cannot make a conversion from int to string. For example, this piece of code will produce a compilation error:
int i = 99; // This ca be any number ranging from and including 65-90 and 97-122 (only for uppercase/lowercase letters)
string s = i; // Here we are trying to store an int value in a string. This will fail
cout << s << endl; // Won't work
What you need to see here is that we can perform mathematical operations on an int value, which we cannot perform on a string. For example, we cannot do the following:
string total = "String a" * "String B";
But we CAN do the following:
int total = 5 * 6;
On the other hand, you can perform SOME mathematical operations on a char value, just like an int value, and we can also use an int value to refer to a certain char according to the ascii table; therefore, these 2 data types are compatible. For example this works:
char s = 'A' + 2; // This results in the character C;
Hope this answers your question.