Heim > Backend-Entwicklung > Golang > Warum gibt Go -1 als „-1' im Hex-Format aus, während C „ffffffffffffffff' ausgibt?

Warum gibt Go -1 als „-1' im Hex-Format aus, während C „ffffffffffffffff' ausgibt?

Mary-Kate Olsen
Freigeben: 2024-11-19 01:43:02
Original
821 Leute haben es durchsucht

Why does Go print -1 as

Diskrepanz beim Hexadezimaldruck zwischen Go und C

In der Programmiersprache Go wird eine 64-Bit-Ganzzahl -1 im %x-Format gedruckt ergibt „-1“. In der C-Sprache würde das gleiche Format jedoch „ffffffffffffffff“ für eine positive ganze Zahl ausgeben. Dieses Verhalten mag auf den ersten Blick kontraintuitiv erscheinen, aber es ergibt sich aus dem grundlegenden Unterschied in der Art und Weise, wie Go und C mit der Ganzzahldarstellung umgehen.

In Go stellt das %x-Verb für Ganzzahlen den Wert der Zahl mithilfe der hexadezimalen Darstellung dar. Für negative Zahlen wie -1 ist die hexadezimale Darstellung „-ff“. Dies entspricht der Go-Konvention, immer explizit basierend auf dem Typ zu formatieren. Um eine vorzeichenbehaftete Ganzzahl als vorzeichenlosen Wert auszugeben, muss sie explizit konvertiert werden.

Zum Beispiel:

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

Dieses Verhalten gewährleistet eine konsistente Darstellung über verschiedene Typen hinweg.

Die Die Gründe für dieses Standardverhalten bei negativen Zahlen wurden von Rob Pike erklärt:

„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 bedeutet, dass Go bei seinen Formatierungskonventionen auf Kürze und Klarheit Wert legt. Obwohl es unerwartet sein mag, auf vorzeichenbehaftete Hexadezimalzahlen zu stoßen, entspricht es Gos Schwerpunkt auf Explizitheit und Typsicherheit.

Das obige ist der detaillierte Inhalt vonWarum gibt Go -1 als „-1' im Hex-Format aus, während C „ffffffffffffffff' 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