Maison  >  Article  >  développement back-end  >  Pourquoi mes tableaux de longueur variable se compilent-ils et s'exécutent-ils en C malgré la norme ?

Pourquoi mes tableaux de longueur variable se compilent-ils et s'exécutent-ils en C malgré la norme ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 13:35:02439parcourir

Why Do My Variable Length Arrays Compile and Execute in C   Despite the Standard?

Les tableaux de longueur variable sont-ils pris en charge en C ?

Question :

Malgré l'idée selon laquelle les tableaux de longueur variable (VLA) ne font pas partie du standard C, pourquoi le code suivant est-il compilé et exécuté avec succès :

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int a[n];

    for (int i=0; i<n; i++) {
        a[i] = i;
    }

    for (int i=0; i<n; i++) {
        cout << a[i] << endl;
    }
}

Réponse :

Le standard C n'oblige pas les compilateurs à prendre en charge les VLA. Cependant, les fournisseurs de compilateurs peuvent inclure des VLA en tant qu'extension. Par exemple, les versions 4.7 et ultérieures de GCC prennent en charge les VLA.

Les VLA ont été initialement proposées pour inclusion dans C 14 mais n'ont pas été acceptées. Ils n'ont pas non plus été inclus dans les révisions ultérieures du C 17.

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!

Déclaration:
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