Oui. bar.a
y bar.b
sont définis comme vrais, mais bar.c
est indéfinie. Cependant, certains compilateurs lui attribuent la valeur false.
Voir un exemple en direct ici : struct demo
Selon la section 8.5.12 de la norme C++ :
si aucune initialisation n'est effectuée, un objet avec durée de stockage automatique ou dynamique a une valeur indéterminée
Pour les types de données intégrés primitifs ( bool , char, wchar_t, short, int, long, float, double, long double), seulement mondial (toutes les variables de stockage statiques) ont une valeur par défaut de zéro si elles ne sont pas explicitement initialisées.
Si vous ne voulez pas vraiment d'indéfini bar.c
pour commencer, vous devez également l'initialiser comme vous l'avez fait pour la fonction bar.a
y bar.b
.