Quote:
Originariamente inviato da mfonz85
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
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).