ich http://www.cplusplus.com/doc/tutorial/typecasting/ lese. Es besagt, dass:Konvertierung zwischen numerischen Typen von derselben Art
-
Andernfalls, wenn die Umwandlung zwischen numerischen Typen von derselben Art (integer-to-Integer- oder Gleitkomma-to-floating) ist, die Umwandlung gültig ist, aber der Wert ist implementierungsspezifisch (und möglicherweise nicht portabel).
Aber ich habe nicht wirklich verstehen, was das obige Zitat zu sagen bedeutet? Kann jemand das bitte anhand eines einfachen Beispiels erklären? Warum führt die Konvertierung zwischen gleichartigen numerischen Typen zu umsetzungsspezifischen Werten? Was ist der Grund?
Also, ist es möglich, dass long nicht größer ist als int auf Einige der C++ - Implementierung? Kennst du eine solche Implementierung? – Destructor
@PravasiMeet, die tatsächlich die gemeinsame Fall ist. Visual Studio x86 und x64 und gcc x86 haben sizeof (long) == sizeof (int), wenn ich mich nicht irre und ich wäre nicht überrascht, wenn clang das Gleiche tun würde. – Pixelchemist
@Pixelchemist: ja gcc 5.2.0 und 3.5.0 Klirren tat das gleiche. Siehe Live-Demo http://melpon.org/wandbox/permlink/IsGDktKO5VUBY0KV & http://melpon.org/wandbox/permlink/6icDnbxu4hAIkwMN. Ich habe 5000000000 als Ausgabe 3 Mal bekommen. Aber wenn ich es auf http://webcompiler.cloudapp.net/ ausführe gibt es mir 5000000000 705032704 705032704 als Ausgabe. Ich hoffe, der ursprüngliche Verfasser der Antwort fügt diese Links in seine Antwort ein. – Destructor