PDA

Visualizza la versione completa : [C] Sottrazione di 48 da un carattere?


LadyGio23
18-12-2012, 01:04
Buona sera a tutti posto qui un pezzo di codice di cui non capisco la funzione:

if(isdigit(*p))/*se un numero*/
{
push(&stk,*p-48);
}

cio se la memoria puntata da *P contiene un numero passa alla funzione push che inserisce in cima allo stack *P-48.
Ma xk qsto -48??? cosa significa?? Sono disperata sto leggendo tutte le guide del C che trovo su interne ma niente =( spero in una vostra risposta.

oregon
18-12-2012, 01:31
Originariamente inviato da LadyGio23
Ma xk qsto -48??? cosa significa?? Sono disperata sto leggendo tutte le guide del C che trovo su interne ma niente

Quello non un "numero" ma una "cifra" (e c' differenza).

E ogni cifra ha un valore ASCII (vedi http://www.oppo.it/tabelle/tabella_ascii.htm) che penso saprai cosa .

Il valore ASCII del carattere 0, ad esempio, 48, mentre per la cifra 1 49 ... e cos via fino alla cifra 9 che ha valore ASCII 57.

Per convertire il valore ASCII nell'effettivo valore decimale della cifra, dovrai sottrarre dal valore ASCII proprio il 48. Cos nel caso della cifra 0 avrai 48-48 -> 0 e cos per le altre cifre.

Kaamos
18-12-2012, 01:41
if (isdigit(*p)) /*se un numero*/
push(&stk, *p - '0');

Questo ugualmente facile ed indipendente dalla codifica, le cifre decimale sono sempre una dopo l'altra, dallo 0 al 9.

LadyGio23
18-12-2012, 02:09
Grazie mille siete stati esaustivi =)

Loading