Non so se sia solo mio il problema, ma non ho capito granchè. Parlate in italiano per favore!
Cooomunque, se ho interpretato correttamente, questo dovrebbe togliere alcuni dubbi:
In C è possibile utilizzare le variabili di qualunque tipo intero (char, int, short, long...) per rappresentare caratteri. In particolare, vengono impiegati a questo scopo sia char (grande 1 byte) che int (grande 4 byte). In alcune situazioni, per ragioni tecniche può essere richiesto un int. Costanti come 'a' e '+', pensate di solito come caratteri, sono di tipo int e non di tipo char (in C non esistono costanti di tipo char).
Oltre a rappresentare caratteri, una variabile di tipo char può essere utilizzata per memorizzare interi di piccola dimensione: poichè ogni char occupa un byte e solitamente un byte equivale a 8 bit, un char può contenere 256 valori differenti (da 0 a 255). Ex:
char c = 97;
printf("%d\n", c);
printf("%c\n", c);
in questo esempio il primo printf stamperà il valore di c, interpretato come numero intero (quindi 97), il secondo stamperà il valore di c interpretato come un carattere, seguendo la tabella ASCII (quindi 'a').
Il tipo int è considerato il tipo "naturale" per lavorare con gli interi (su 4 byte si possono memorizzare numeri da -2147483648 a 2147483647).
In parole povere, entrambi i tipi char e int possono essere adoperati per "operazioni matematiche", tenendo però conto che di solito il massimo numero memorizzabile in un char è 255, mentre con un int si hanno possibilità di gran lunga maggiori. E in entrambi si possono memorizzare caratteri, anche se come detto prima, a volte è preferibile l'utilizzo di un int: ad esempio per caratteri multibyte (ex: EOF). Un char è utilizzato (almeno a mio avviso) per un minor consumo di memoria.
NB: quello che ho detto vale per le architetture a 32 bit!