|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
[C] Indovinello trovato in giro
Ciao a tutti,
girava stamani in ufficio. Codice:
#include<stdio.h> #define s 65*65*65*65*65 void main() { printf("%c",s); } Buon lunedì a tutti.
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Codice:
>>> print chr(65*65*65*65*65 & 0xff) A
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Quote:
![]()
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Purtroppo sì, perché in quella printf il compilatore esegue il push di tutto il valore, che è un intero (1160290625); non sa che in quel posto la funzione si aspetta un char (in realtà in questo caso sì, perché la stringa è costante; ma soprassediamo considerando il caso più generale).
Poi la routine di parsing, facendo la scansione dello stack, in base al template che gli hai passato, carica il valore che gli serve, in base al tipo specificato nel template. E lì possono succedere anche dei disastri. In realtà il risultato non è garantito nemmeno su un sistema little-endian, perché un compilatore potrebbe avere i char a 16 bit, e quindi caricare 2 byte anziché uno soltanto...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
interessanti osservazioni.
Mi piaciono queste sottigliezze e curiosità. Spero di non essere andato troppo oltre ma dati gli ultimi giorni di discussioni su lavoro/uni volevo tornare alla programmazione ![]()
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
non stampa ovviamente nulla
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Su gcc 4.7.2 , debian x64, mi stampa A
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
anche Clang 3.1 su FreeBSD 9.1 x86_64 mi stampa A
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Manca ancora qualche sistema da testare
![]() Che ne so.... un System V collegato ad un VT52
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Io quelli ho.
![]() Inviato dal mio HUAWEI U8825-1 con Tapatalk 2
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
![]() ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Supponi di avere un impianto che ti e' costato milioni di euri. Lo cambi perche' non fa il flush alla print()?
![]() Cmq ci sono sistemi anche piu' recenti che si comportano allo stesso modo...
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
![]() Esticazzi, se permettete ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
![]() cmq il risultato potrebbe essere uguale anche su una macchina big endian. O anche no
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
No, dovrebbe essere 'E'. Sempre nell'ipotesi che venga prelevato un byte per il char.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
si?
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Quanto affermi e' chiaramente vero su compilatori K&R (passami la definizione) poiche' non conoscono nulla della funzione che vai a chiamare e non hanno alternativa a fare il push dei parametri loro passati. Me l'ha detto il mio commercialista ![]()
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Il risultato della moltiplicazione è 0x4528a141. Se prendi il byte più significativo, è 0x45, che in ASCII corrisponde alla E.
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Codice:
lucas@lapdog:~$ bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. (65*65*65*65*65)%256 65
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Così hai estratto il byte basso.
P.S. bc cos'è?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:05.