Maison > développement back-end > C++ > `int size = 10;` est-il une expression constante valide pour le dimensionnement des tableaux en C ?

`int size = 10;` est-il une expression constante valide pour le dimensionnement des tableaux en C ?

Linda Hamilton
Libérer: 2024-12-09 21:15:10
original
500 Les gens l'ont consulté

Is `int size = 10;` a Valid Constant Expression for Array Sizing in C  ?

Est-ce que "taille int = 10 ;" une expression constante ?

L'extrait de code :

int main() {
  int size = 10;
  int arr[size];
}
Copier après la connexion

soulève des questions quant à savoir si le tableau de longueur variable (VLA) est une fonctionnalité C valide.

Le point de vue de la norme

La norme C (8.3.4/1) exige que la taille des tableaux soit expressions constantes intégrales, dont la « taille » ne semble pas être. Les compilateurs comme GCC et Clang acceptent ce code en raison de leur prise en charge des VLA en tant qu'extension en C . Visual Studio, adhérant à la norme, le rejette.

Tableaux de longueur variable

Les VLA sont une fonctionnalité C99 qui autorise des tableaux avec des tailles déterminées dynamiquement. GCC et Clang étendent cette fonctionnalité à C . Cependant, les VLA ne font pas partie du standard C et l'utilisation de l'indicateur -pedantic dans GCC/Clang générera des avertissements ou des erreurs.

Expressions constantes intégrales

Selon le Projet de norme C (5.19/3), une expression constante intégrale est une expression d'un type d'énumération intégrale ou sans portée, implicitement convertie en une prvalue, qui satisfait aux critères d'une expression constante de base.

Faire de « taille » une expression constante

Pour adhérer à la norme, la « taille » doit être déclarée une expression constante intégrale . Ceci peut être réalisé en :

  • En utilisant const : const int size = 10 ;
  • En utilisant constexpr : constexpr int size = 10 ;

Conclusion

L'acceptation par GCC et Clang de Les VLA sont une extension et non une fonctionnalité standard en C . Le rejet de Visual Studio est conforme à la norme. Pour utiliser les fonctionnalités de type VLA dans le C standard, il est recommandé d'utiliser const ou constexpr pour que les tailles de tableau intègrent des expressions constantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal