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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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]); } }
Partager