Question: If I declare this:

```
int i = 0 + 'A';

```

is `'A'` considered `char` or `int`?

some people might use:

```
int i = 0 + (int)'A';

```

but is this really necessary?

Answer: 
In C, `'A'` type is `int` (not char). I think some people do `int i = 0 + (int)'A';` in C++ (or make code useful in both C++/C).
According to the standard ISO C99, the type of a literal character in C is `int`. 

However, the literal characters, like 'c', have a range that fits in a `char`.  

Thus, you can assign a literal character to a `char` variable without loss of information. 

```
 char c = 'c'; /* 'c' is int, but (c == 'c') is true */

```