Maison > développement back-end > Golang > le corps du texte

Pourquoi Go imprime-t-il -1 sous la forme \'-1\' au format hexadécimal alors que C imprime \'ffffffffffffffff\' ?

Mary-Kate Olsen
Libérer: 2024-11-19 01:43:02
original
767 Les gens l'ont consulté

Why does Go print -1 as

Différence d'impression hexadécimale entre Go et C

Dans le langage de programmation Go, impression d'un entier 64 bits -1 en utilisant le format %x donne "-1". Cependant, en langage C, le même format afficherait "ffffffffffffffff" pour un entier positif. Ce comportement peut sembler contre-intuitif au début, mais il découle de la différence fondamentale dans la façon dont Go et C gèrent la représentation entière.

Dans Go, le verbe %x pour les entiers représente la valeur du nombre en utilisant la représentation hexadécimale. Pour les nombres négatifs comme -1, sa représentation hexadécimale est "-ff". Cela adhère à la convention Go de toujours formater explicitement en fonction du type. Pour imprimer un entier signé en tant que valeur non signée, il doit être explicitement converti.

Par exemple :

i := -1 // type int
fmt.Printf("%x", i)  // prints "-1"
fmt.Printf("%x", uint(i))  // prints "ffffffffffffffff"
Copier après la connexion

Ce comportement garantit une représentation cohérente entre différents types.

Le Le raisonnement derrière ce comportement par défaut pour les nombres négatifs a été expliqué par Rob Pike :

"Parce que si c'était le cas, il n'y aurait aucun moyen d'imprimer quelque chose en négatif nombre, qui, comme vous pouvez le constater, est une représentation beaucoup plus courte."

Cela signifie que Go donne la priorité à la brièveté et à la clarté dans ses conventions de formatage. Bien qu'il puisse être inattendu de rencontrer des nombres hexadécimaux signés, cela correspond à l'accent mis par Go sur le caractère explicite et la sécurité des types.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal