Dimensionnement tableau et compilation
Bonjour!
Voici une affirmation que je trouve pour la 3eme fois (un prof et 2 bouquins différents) et pourtant le test me prouve le contraire.
"Cette instruction:
Code:
1 2 3 4
| #define N 50
...
int t[N];
float h [2*N-1]; |
est correcte. En revanche, elle ne le serait pas (en C) si N était une constante symbolique définie par const int N=50, les expressions N et 2N-1 n'étant alors plus calculables par le compilateur (elle sera cependant acceptée en C++)."
J'ai testé sous Code::Blocks et Dev-C++ et les 2 cas fonctionnent! Pourquoi?
Mon prof me dit que les parametres des compilateurs prennent en compte des versions de C améliorées par rapport au C initial.
Mais si c'est le cas, j'imagine qu'on doit pouvoir paramétrer le compilateur sur une version du C, nan? ça se choisirait où?
Pourquoi les deux écritures fonctionnent?
Merci!
Blutch
P.S.: et voici un petit code pour que vous testiez
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <stdio.h>
main()
{
const int N=4;
int i[N], n;
//initialisation des valeurs des cellules du tableau
for (n=0; n<4; n++)
{
i[n]=0;
}
//attribution de valeurs aux cellues du tableau
for (n=1; n<4; n++)
{
i[n]=i[n-1]+1;
printf("cellule numero %d",n);
printf("\tvaleur=%d\n",i[n]);
}
} |