il sistema converte implicitamente in ascii ed esegue il confronto
In realtà è il contrario. Ossia, il sistema associa a un determinato range di numeri (da 0 a 255) dei simboli che in alcuni range particolari noi vediamo come lettere, numeri o qualcosa di intelleggibile.
Pertanto il "cast" avviene al contrario, ossia nell'espressione:
codice:
if ( 'd' > 'b') ...
noi vediamo lettere perché il sistema associa i corrispondenti simboli 'd' e 'b' ai numeri 70 e 68 (in codifica ASCII), ma il sistema usa solo numeri, ossia:
codice:
if ( 70 > 68) ...
In altre parole, non è che a un simbolo corrisponda un numero, ma a un numero viene fatto corrispondere un simbolo (simbolo che dipende dalla codifica usata dal sistema).