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

Pourquoi la conversion d'une constante uint8 en int8 provoque-t-elle directement une erreur de compilation, mais cela fonctionne si la conversion est effectuée après l'affectation ?

Barbara Streisand
Libérer: 2024-10-29 02:05:02
original
672 Les gens l'ont consulté

Why does converting a uint8 constant to int8 directly cause a compile error, but it works if the conversion is done after assignment?

Confusion concernant la conversion de uint8 en int8

Question :

Le code suivant tente de convertir une constante uint8 en int8, mais rencontre une erreur de compilation :

<code class="go">package main

func main() {
    a := int8(0xfc)  // compile error: constant 252 overflows int8
    _ = a
}</code>
Copier après la connexion

Par contre, le code suivant ne génère pas l'erreur si vous différez la conversion de type après l'affectation :

<code class="go">package main

func main() {
    a := 0xfc
    b := int8(a)  // ok
    _ = b
}</code>
Copier après la connexion

Quelle est la différence entre ces deux codes ? Aussi, pourquoi le premier code donne-t-il une erreur de compilation ?

Réponse :

Dans le premier code, la constante 0xfc est évaluée avant d'être convertie en type int8. 0xfc est une valeur qui rentre dans uint8, mais pas dans int8. Par conséquent, le compilateur génère l’erreur « constant 252 overflows int8 ».

Dans le deuxième code, la conversion de type se produit une fois l'affectation effectuée. Ceci évalue a comme type uint8, puis le convertit en type int8. Aucune erreur ne se produit donc.

Conclusion :

Si vous souhaitez convertir uint8 en int8, vous devez vous assurer que la valeur de la constante est dans la plage de int8 avant la conversion. Sinon, une erreur de compilation se produira.

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