Warum gibt Go bei Verwendung von „%x' negative Ganzzahlen als „-ff' aus, während C „fffffffffffffff' ausgibt?

Susan Sarandon
Freigeben: 2024-11-18 09:41:02
Original
952 Leute haben es durchsucht

Why Does Go Print Negative Integers as

Negative hexadezimale Ganzzahlen in Go vs. C drucken

Beim Drucken eines Ganzzahlwerts von -1 mit dem Formatbezeichner „%x“ verhalten sich Go und C unterschiedlich. In Go ist die Ausgabe „-1“, während sie in C wie erwartet „fffffffffffffff“ ist.

Gos Verhalten

Go berücksichtigt die „%x " Formatbezeichner zur Darstellung des Werts der Zahl in hexadezimaler Schreibweise, unabhängig davon, ob er negativ ist. Für -1 ist der Hexadezimalwert also „-ff“.

Verhalten von C

Im Gegensatz dazu druckt C Speicherdarstellungen von Ganzzahlen mit „%x“. Spezifizierer. Da -1 normalerweise in Zweierkomplementform gespeichert wird, lautet seine hexadezimale Darstellung im Speicher „fffffffffffffff“.

Vereinheitlichen des Verhaltens mit Typkonvertierungen

Um ein C-ähnliches Verhalten zu erreichen In Go muss man die vorzeichenbehaftete Ganzzahl explizit in ihr vorzeichenloses Äquivalent konvertieren, bevor man den Formatbezeichner „%x“ anwendet. Zum Beispiel:

i := -1 // type int
fmt.Printf("%x", uint(i)) // prints "fffffffffffffff"
Nach dem Login kopieren

Begründung für Gos Standardverhalten

Rob Pike, ein Go-Entwickler, erklärt die Gründe für Gos Standardverhalten:

" Warum ist das nicht die Standardeinstellung [das vorzeichenlose Format]? Denn wenn es so wäre, gäbe es keine Möglichkeit, etwas als negative Zahl auszugeben, was, wie Sie sehen, eine viel kürzere Darstellung ist.“

Das obige ist der detaillierte Inhalt vonWarum gibt Go bei Verwendung von „%x' negative Ganzzahlen als „-ff' aus, während C „fffffffffffffff' ausgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage