la conversion de int à u_int8_t
est-il une bonne façon de convertir un int
de la valeur à uint8_t
:
int x = 3;
uint8_t y = (uint8_t) x;
supposer que x ne sera jamais inférieure à 0. Bien que gcc
ne donne pas d'avertissement pour les lignes ci-dessus, je voulais juste être sûr que si il est correct de le faire ou est-il une meilleure façon de convertir en int pour u_int8_t?
P. S.-je utiliser C sous Linux, si vous allez à suggérer une fonction standard
Ce serait considérée comme un mieux?
Il n'est pas nécessaire pour le casting. Simplement
Nbr44, je veux dire avec une meilleure façon, c'est que si il y a un moyen standard ou de la conversion peut causer un problème et la suggestion de remplacement ne serait pas la cause de ce problème.
Même si c'est évident, être prudent sur déborde
Recommander
Il n'est pas nécessaire pour le casting. Simplement
y = x;
est très bien.Nbr44, je veux dire avec une meilleure façon, c'est que si il y a un moyen standard ou de la conversion peut causer un problème et la suggestion de remplacement ne serait pas la cause de ce problème.
Même si c'est évident, être prudent sur déborde
uint8_t
.Recommander
y = x;
au lieu de uint8_t y = x;
peut introduire un bug si il y a un déjà déclaré y
dans la portée.OriginalL'auteur Johan Elmander | 2013-07-26
Vous devez vous connecter pour publier un commentaire.
C'est correct, mais le casting n'est pas nécessaire:
est équivalent à
x
est implicitement converti àuint8_t
avant l'initialisation dans la déclaration ci-dessus.& 0xff
pour l'empêcher de se plaindre 😛En supposant que
int
peut s'adapter à lashort
.aucun diagnostic n'est requis par C, c'est une déclaration valide et la mise en œuvre ne peut se refuser à faire la traduction, mais bien sûr, la mise en œuvre est libre d'émettre un supplément de message d'information.
oui je suis au courant de ça, juste pensé que je me dois de souligner VS du comportement
fixe. J'ai toujours en tête cette C devis pour l'initialisation sur le même type de contraintes et de conversions que pour les simples d'attribution s'appliquent.
OriginalL'auteur ouah