Je me suis demander hier soir, avant de dormir
qu´est ce qui passerait si je créé un programme avec des boucles infinies en for et en while ![]()
exemple:
main(void)
{
int i=1
while ( i<0)
{
cout<<"AAAAAAAAAA..."; / *le plus grand nombre de char possible */
}
}
exemple:
main(void)
{
int i=1
while ( i<0)
{
cout<<"AAAAAAAAAA..."; / *le plus grand nombre de char possible */
i++;
j´ai oublier ça
}
}
ou encore comme ça:
void X()
{
for ( int x1=1; x2=1; x3=1; x4=1; x1<0; x2<0; x3<0; 4x=0; x1++; x2++; x3++; x4++)
}
est ce que ça fait des boucles infinies ou erreur de compilation ![]()
bin essaye tu verras bien . ..
mais tes boucles ne feront rien du tout car ta condition est fausse avant même d´avoir commencé !
donc -> sortie de programme
J´ai pas encore de compilateur
Logiquement c´est impossible, mais est ce que le compilateur va s´en rendre compte
mon idlée du départ c´était de savoir si le compilateur va essayer toutes les possibilités, ou il ne va tout simplement pas compiler ![]()
for ( ;;) {
;
}
C´est super amusant;
Lol> C´est pas le compilateur qui fait ça. Lui il s´en fout que tu fasses un programme mal foutu ( sinon ça compilerait pas beaucoup chez Krosoft), du moment que tu respectes SA syntaxe ( ici la syntaxe du C++) il transforme le tout en ASM.
Par contre, le compilateur peut t´avertir ou te dire que tu dépasses ses limites :
Prog.c: In function `main´:
Prog.c:5: warning: integer constant is too large for this configuration of the compiler - truncated to 64 bits
Prog.c:5: warning: overflow in implicit constant conversion
Le compilateur accepte les boucles infinies. Mais la mieux c´est :
void main(void)
{
while(1);
}
salut,
je voudrai savoir en C comment faire pour affecter une lettre dans un tableau.
j´ai fait ça mais ça marche pas:
char tab [15][15];
tab[7][7]="k";
il me dit qu´il faut pas mettre de =
-> tab[7][7] = ´k´;
Pourquoi ne pas utiliser des chaines de caractères ?
char *ch[2] = {
" laule",
" loule"
};
printf ( "ch[0] => %s, " , *(ci + 1));
printf ( "ch[1] => %s\n", *(ci + 2) = " lawle");
/ *
retourne: ch[0] => laule, ch[1] => lawle
char *c = " lol";
Petite erreur de ma part:
printf ( "ch[0] => %s, " , *(ch + 1));
printf ( "ch[1] => %s\n", *(ch + 2) = " lawle");
LOL excuse moi Jarose mais j´ai rien compris, c´est vrai que j´ai pas précisé que j´étais débutant.
en fait si je voulais faire ça c´est parceque je voulais m´entraîner à faire des déplacements ( pour ensuite faire des jeux).
par exemple, si le joueur tape 4, le caractere va bougé vers la case tab[6][7]. Pour simuler un déplacement vers la gauche.
![]()
oué les chaines de caractères se gèrent avec les pointeurs je crois...
et moi je connais pas trop les chaines de caractères. dsl jpeux pas t´aider
" char tab [15][15];
tab[7][7]="k";
il me dit qu´il faut pas mettre de ="
Effectivement. Tout simplement parce que ´a´ ! = " a".
" a" est une chaine de caractères. a un caractère.
en fait " a" sera constant, pour des raisons que je ne ferais pas mieux de mentionner sous peine que tu sois tout perdu.
" a" va en fait valloir un pointeur de char constant vers la chaine.
" a" est donc un const char*.
´a´ par contre:
c´est un caractère unique, et il est, lui, de type vraiment char.
ici, le prob est que tu assigne à un caractère ( tab[7][7]), donc de type char, un pointeur vers un caractère ( "k") de type const char*.
donc un char = const char*.
C´est ( à pars extrêmement rares exceptions de pointeurs sur 8 bits, ce que je n´ai jamais vu de mon vivant mais qui seraient théoriquement possible, de pars la portabilité du C/C++, et même encore, on essaierais de casser la règle de constance, et même s´il le compilo ne ferait qu´un warning pour un manque de castage, il y aurait bug évident, donc ça ne serait pas bon) impossible, et donc le compilo va râler.
Ce que tu cherches est surement:
char tab [15][15];
tab[7][7]=´k´;
Je me trompe?
Kelios
---------
moi g plusieur question en c++ car je debute:
-comment faire arreter le prog. qq seconde svp car jarrive po a utiliser sleep
-les pointeurs jvois po leur utilite sa sert a quoi ? ?
merci davance
pour utiliser Sleep tu dois include windows.h.
Sleep(S000) où S est le nombre de secondes...
si tu evux faire une demi seconde tu fais Sleep(500);
Voilà pour l´autre question je laisse des plus calés que moi te répondre, j´ai peur de dire des bêtises...
@++ et bonne continuation
" -les pointeurs jvois po leur utilite sa sert a quoi ? ? "
L´habituelle question...
En général au début tu vois pas l´utilité et avec le temps, à force de programmer, tu te rendras compte que les pointeurs/références sont essentielles.
Les pointeurs ont deux grosses utilités en C/C++, à mon avis:
-Controler une variable inconnue:
par exemple lors du passage de paramètre de fonction, tu peux controler une variable extérieure à la fonction, pas seulement sa valeur ou, dans le cas d´un objet, une copie de l´objet.
-Utiliser les tableaux. Là c´est plus complexe, et pourtant tu les a probablement déjà utilisé sans savoir qu´il s´agissait d´un pointeur que l´on déférence.
Ils en ont aussi pleins d´autres, comme ( ceux qui me passent par la tête en ce moment):
-Manipuler directement la mémoire. Bon d´accord, c´est pas commun, mais moi je l´utilise en masse ^^
-Manipuler des fonctions inconnues. Pour la même raison que les variables.
De plus ils interviennent énormément en POO, internement: par exemple avec le __vftable, le this, ect...
Les références sont une version simplifiée, plus fiable des pointeurs.
Les deux seules utilités que j´en vois c´est manipuler des fonctions et des variables inconnues.
Mais bon, même si tu comprend pas tout de suite, tu finira par te rendre compte avec du temps l´utilitée sur-dimensionnée des pointeurs et références...
Kelios
---------