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"
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!