Discussione: esercizio C
View Single Post
Old 16-03-2007, 16:10   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da mfonz85 Guarda i messaggi
Ok, spiegaci
Hai sfruttato gli overflow??
overflow?? No no.
pierosa ha sfruttato il fatto che il numero decimale 3223896 in esadecimale è 313158h e siccome sulle architetture Intel che sono "little-endian" i byte sono memorizzati dal meno significativo al più significativo, in memoria il valore intero è memorizzato come:

58h 31h 31h 00h
dove i 3 valori sono appunto i codici ASCII dei caratteri X 1 1
Con 'p' punta ai singoli byte che compongono l'intero. L'ultimo è appunto nullo quindi fa da terminatore

Quote:
Originariamente inviato da mfonz85 Guarda i messaggi
Cos'è sta roba??
Io invece ho usato una strada diversa. ?: è un operatore ternario. La mia espressione è equivalente a:
Codice:
if (a == 89)
    a = 49;
else if (a == 49)
    a = 305;
else
    a = 0;
Anche qui uso i codici ASCII dei caratteri ma dal momento che si devono stampare due '1', devo differenziarli. 305 in hex è 131h, castato a (char) vale solo 31h ma così il valore intero è diverso dall'altro (49).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso