Comment puis-je déclarer et définir plusieurs variables dans une ligne à l'aide de C++?
J'ai toujours mais que, si je déclare ces trois variables qu'ils auront tous la valeur 0
int column, row, index = 0;
Mais je trouve que le seul indice est égal à zéro & les autres sont ordure comme 844553 & 2423445.
Comment puis-je initialiser toutes ces variables à zéro, sans le déclarer chaque variable sur une nouvelle ligne?
- Attention à ceux qui, d'une ligne multi-déclarations de variables. Il est plus facile que vous le pensez à déclarer un pointeur de int suivie par une liste des entiers (
int* a, b, c;
ne pas faire ce à quoi il ressemble). - Il y a seulement trois variables, mec, écrire
=0
pour chacun dans leurs définitions. Et, si vous voulez vraiment de nombreuses variables, puis essayez un tableau:int a[10]={0}
d'initialiser chaquea[i]
à 0 pour vous. - Le compilateur ne doit pas permettre que de construire si elle va se comporter différemment de ce qu'est un raisonnable programmeur pourrait s'attendre à faire...à mon humble avis
- Raisonnable programmeur pourrait penser: "hmm, cette syntaxe pourrait signifier un couple de choses différentes en fonction de la façon dont la grammaire lie les choses", de rechercher le Standard pour savoir ce qui est vrai, et de s'en sortir.
Vous devez vous connecter pour publier un commentaire.
Lorsque vous déclarez:
Seulement l'index est mis à zéro.
Cependant, vous pouvez effectuer les opérations suivantes:
Mais personnellement, je préfère le suivant qui a été souligné.
C'est une forme plus lisible à mon avis.
ou
bool previousInputValue, presentInputValue;
) ou si ils ont juste arriver à être le même type maintenant, mais n'ont pas vraiment besoin d'être (uint8_t height, width;
pourrait se transformer enuint8_t height; uint16_t width;
dans l'avenir et doit avoir étéuint8_t height; uint8_t width;
pour commencer).uint8_t height; uint16_t width;
au lieu deuint8_t height, width;
permet d'économiser de 10 caractères dans le futur. 🙂 vous pouvez bien sûr le faire comme il vous plaît. Assurez-vous de le rendre facile à lire. Ainsi, la dernière forme est la plus explicite.int presentValue = 0; typeof(presentValue) previousValue = presentValue;
, mais je crois quetypeof()
est un non-standard GCC extension.Comme @Josh dit, la réponse correcte est:
Vous aurez besoin pour regarder dehors pour la même chose avec des pointeurs. Ce:
Est équivalent à:
unsigned long x, y;
déclaréx
commeunsigned long
maisy
comme justeunsigned
, akaunsigned int
! C'est exactement la même! </rant>int *a
signifie que*a
représente unint
valeur.void* a
de compiler etvoid *a, b, c
ne sera pas. Cette rationalisation fonctionne pour moi.int *a, *b;
. Je crois que c'est encore une partie de C++ seulement en raison de la compatibilité.Si vous déclarez une variable/objet par ligne non seulement permet-il de résoudre ce problème, mais il rend le code plus clair et évite des erreurs stupides lors de la déclaration de pointeurs.
Pour répondre à votre question, vous devez l'initialiser chaque variable à 0 explicitement.
int a = 0, b = 0, c = 0;
.De noter que ce formulaire sera de travailler avec le type personnalisé est trop, surtout quand leurs constructeurs prendre plus d'un argument.
auto
...): int colonne { 0 } , ligne { 0 } index { 0 } ;Approches possibles:
memset
ou{0}
le tableau.struct
, etmemset
ou avoir un constructeur qui serait initialiserà zéro.
int index = 0;
.De 2k18, vous pouvez utiliser Structuré Liaisons:
Démo
Je ne recommanderais pas cela, mais si vous êtes vraiment en étant une ligne et écrit seulement 0 une fois, vous pouvez également le faire:
Lorsque vous déclarez une variable sans l'initialiser, un nombre aléatoire à partir de la mémoire est sélectionnée et que la variable est initialisée à la valeur.