Originariamente inviato da Snakethesniper
Per esempio se prendo 'a' e poi 1 devo poter fare 'a' + 1 = 'b'.
Ora, ho scritto : char d = c + num;
c è il carattere preso da tastiera e num l'intero (sempre preso da tastiera).
Nel momento in cui compilo mi da errore sul "+" dicendo che è intero e ci si aspetta un char. Ora come risolvo? Ho provato a forzare anche il num in char ma l'errore me lo da sempre sul +.
Qui vale la regola del Binary Numeric Promotion.
Nel tuo caso 'c' è un char e 'num' è un int. Quindi il char viene convertito a int e la somma viene fatta come int.
Non basta fare il cast di num a char .... per la binary numeric promotion verrebbero comunque entrambi portati a int e il problema lo riavresti lo stesso (perché un int non è assegnabile direttamente a un char).

Devi fare un cast del risultato finale e siccome il cast è più prioritario dell'operatore + devi fare:

char d = (char) (c + num);

E c'è anche una alternativa:

char d = c;
d += num;

L'operatore composto += prevede un cast implicito al tipo del primo operando.