Je pense toujours que si je déclare ces trois variables, elles auront toutes la valeur
int column, row, index = 0;
Mais je trouve que seul index est égal à zéro et les autres sont des bric-à-brac comme 844553 & 2423445.
Comment initialiser toutes ces variables à zéro sans déclarer chaque variable sur une nouvelle ligne?
int column = 0, row = 0, index = 0;
Lorsque vous déclarez:
int column, row, index = 0;
Seul l'index est mis à zéro.
Cependant, vous pouvez faire ce qui suit:
int column, row, index;
column = index = row = 0;
Mais personnellement, je préfère ce qui suit.
C’est une forme plus lisible à mon avis.
int column = 0, row = 0, index = 0;
ou
int column = 0;
int row = 0;
int index = 0;
Comme @Josh a dit, la bonne réponse est:
int column = 0,
row = 0,
index = 0;
Vous devrez faire attention à la même chose avec les pointeurs. Cette:
int* a, b, c;
Est équivalent à:
int *a;
int b;
int c;
Si vous déclarez une variable/objet par ligne, non seulement cela résoudra ce problème, mais cela clarifiera le code et évitera les erreurs stupides lors de la déclaration des pointeurs.
Pour répondre directement à votre question, vous devez initialiser explicitement chaque variable à 0. int a = 0, b = 0, c = 0;
.
int column(0), row(0), index(0);
Notez que cette fiche fonctionnera également avec les types personnalisés, en particulier lorsque leurs constructeurs prennent plusieurs arguments.
Approches possibles:
memset
ou {0}
le tableau.struct
et memset
ou ayez un constructeur qui les initialise à zéro.À partir de 2k18, vous pouvez utiliser Structured Bindings :
#include <iostream>
#include <Tuple>
int main ()
{
auto [hello, world] = std::make_Tuple("Hello ", "world!");
std::cout << hello << world << std::endl;
return 0;
}
Je ne le recommanderais pas, mais si vous êtes vraiment intéressé par une ligne et que vous n'écrivez qu'une seule fois, vous pouvez également le faire:
int row, column, index = row = column = 0;