Stavo leggendo http://www.cplusplus.com/doc/tutorial/typecasting/. Si dice che:Conversione tra tipi numerici dello stesso tipo
-
Altrimenti, se la conversione è tra tipi numerici dello stesso tipo (numero intero da intero o variabile a variabile), la conversione è valido, ma il valore è specifico per l'implementazione (e potrebbe non essere portatile).
Ma io davvero non ho capito che cosa fa la citazione di cui sopra intende dire? Qualcuno può spiegarlo usando un semplice esempio? Perché la conversione tra un tipo numerico dello stesso tipo genera un valore specifico dell'implementazione? Qual è il motivo?
Quindi, è possibile che long non sia più grande di int su Alcune delle implementazioni in C++? Conosci questa implementazione? – Destructor
@PravasiMeet Questo è il caso comune in realtà. Visual Studio x86 e x64 e gcc x86 hanno sizeof (long) == sizeof (int) se non mi sbaglio e non sarei sorpreso se clang facesse lo stesso. – Pixelchemist
@Pixelchemist: yes gcc 5.2.0 & clang 3.5.0 ha fatto lo stesso. Vedi demo dal vivo http://melpon.org/wandbox/permlink/IsGDktKO5VUBY0KV e http://melpon.org/wandbox/permlink/6icDnbxu4hAIkwMN. Ho ottenuto 5000000000 come output 3 volte. Ma quando lo eseguo su http://webcompiler.cloudapp.net/ mi dà 5000000000 705032704 705032704 come output. Spero che lo scrittore della risposta originale aggiunga questi collegamenti nella sua risposta. – Destructor