PDA

Visualizza la versione completa : [C++] Confronto tra caratteri (lettere)


spimi99
05-03-2018, 15:39
Ho dei dubbi su come ragiona il linguaggio C quando ci sono dei confronti tra lettere. Nell'espressione "IF D > B" il sistema converte implicitamente in ascii ed esegue il confronto, oppure è necessario che la conversione in ascii la esegue il programmatore con un cast. Grazie mille a tutti!!!

linoma
05-03-2018, 16:14
quello che hai scritto è un confronto tra 2 variabili D e B. Per i caratteri devi includerli negli apici 'D' e 'B'

shodan
05-03-2018, 16:15
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:


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:


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).

spimi99
05-03-2018, 17:13
Vi ringrazio molto per il vostro aiuto. Quindi se mi viene richiesto di verificare se una lista di caratteri è in ordine alfabetico posso eseguire tranquillamente dei confronti sulle lettere senza utilizzare i codici ascii.

oregon
05-03-2018, 18:05
Vi ringrazio molto per il vostro aiuto. Quindi se mi viene richiesto di verificare se una lista di caratteri è in ordine alfabetico posso eseguire tranquillamente dei confronti sulle lettere senza utilizzare i codici ascii.

Sì, per le costanti usa gli apici, come ti hanno detto

if(variabile <= 'Z') ...

Loading