En omettant le type de données (par exemple, “unsigned” au lieu de “unsigned int”)
Je sais que si la déclaration de type de données est omis dans le code C/C++ dans une telle manière: unsigned test=5;
, le compilateur effectue automatiquement cette variable de type int (unsigned int dans ce cas). J'ai entendu dire que c'est un C standard et il fonctionnera dans tous les compilateurs.
Mais j'ai aussi entendu dire que cela est considéré comme une mauvaise pratique.
Qu'en pensez-vous? Dois-je vraiment le type de unsigned int
au lieu de simplement unsigned
?
Sont short
, long
et long long
également les types de données?
- Juste vu qu'il est utilisé et est venu ici pour demander exactement la même chose. Ne l'aime pas, mais il est.
Vous devez vous connecter pour publier un commentaire.
unsigned
est un type de données! Et il arrive à aliasunsigned int
.Lorsque vous écrivez
unsigned x;
vous pas omettant tout type de données.C'est complètement différent de “défaut
int
”, qui existe en C (mais pas en C++!) lorsque vous avez vraiment omettre le type de la déclaration et C automatiquement déduit que le type deint
.Comme pour le style, personnellement, je préfère être explicite et donc d'écrire
unsigned int
. D'autre part, je suis actuellement impliqué dans une bibliothèque, où il de la convention de l'écrireunsigned
, donc je faire à la place.unsigned
est vraiment juste un alias pourunsigned int
short
,long
&long long
types de données, alors?unsigned
est un alias pourunsigned int
de la même manière qu'en C++ (section 6.7.2).Je dirais même prendre un peu plus loin et utiliser stdint's uint32_t type.
Il pourrait être une question de goût, mais je préfère savoir ce que primitive, je suis en utilisant plus de certains anciens de l'examen de l'optimisation par la plate-forme.
std::uint32_t
est pas un "primitif". C'est une optiontypedef
à un type qui doit avoir exactement 32 bits et peut ou peut ne pas être une primitive.Comme @Konrad Rudolph dit,
unsigned
est un type de données. C'est vraiment juste un alias pourunsigned int
.Quant à la question de l'utilisation de
unsigned
être une mauvaise pratique? Je dirais que non, il n'y a rien de mal avec l'aide deunsigned
comme un spécificateur de type de données. Les professionnels ne seront pas jetés par cela, et de toute norme de codage qui dit que vous devez utiliserunsigned int
est inutilement draconienne, de mon point de vue.Gratuite verbosité considéré comme nocif. Je n'aurais jamais écrire
unsigned int
oulong int
ousigned
quoi que ce soit (à l'exception dechar
ou bitfields), car elle augmente l'encombrement et diminue la quantité significative de code que vous pouvez adapter à 80 colonnes. (Ou, plus probablement, encourage les gens à écrire du code qui ne rentre pas dans 80 colonnes...)unsigned int
" moi non plus! ..."ousigned
" ce que je ne suis pas sûr à ce sujet; j'ai tendance à préférer l'écrituresigned
queint
, par symétrie avecunsigned
... mais il est en effet un point queint
est préférable en raison de sa brièveté.