30

À mon avis, le plus pratique est que tu traîtes toutes les pré-incrémentations avant l'instruction et toutes les post-incrémentations après l'instruction. L'implémentation la plus facile? Lire la ligne en 3 passes: pré-incrémentations, instructions, post-incrémentations.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

31

Thibault la demo que tu donnes est en effet tres simple a comprendre, mais heu.. qui est la jeune fille dans le meme répertoire ;-) ?
Je commence a reussir a faire bouger un sprite. Ou bah je suis content !

32

La solution c de PAS utiliser des trucs du genre [i]a=i++; wink
Enfin, à la limite si tu ne te poses pas la question de la portabilité,
c pas grave, tu vois avec TON compilateur ce que ça donne.

Il y a d'autres pbs avec des codes du genre :

printf("%d %d", ++n, power(n, 2)); /* #bbbbouuuuusad# */

power(n, 2) peut très bien être évalué AVANT ++n, ce qui évidemment change le resultat..
il est préférable d'écrire :

++n;
printf("%d %d", n , power(n, 2)); /* #hhhaaaaaaaasmile# */

là on est sûr que ça donnera la meme chose ac tous les compilateurs smile

[edit]Edité par Pen^2 le 11-11-2001 à 15:05:32[/edit]

33

Je ne suis pas d'accord, une ligne comme "a[i]=i++; " est vraiment dépourvue d'ambiguïté.

"a[i]=i++; " : cette ligne place dans a[i] la valeur de i, et ensuite incrémente i.

34

au vu des differents exemples "ambigus" donnés, je crois que la solution de Kevin consistant a traiter les pre-incrementations avant l'instructions, puis les post-incrementations regle tous les problemes, aussi bien de semantique que de simplicité d'implémentation coté compilateur.
Il suffit de bien déterminer dans une doc l'ordre des incrementations.

De toute facon qqe soit le compilo il est evident qu'on evite toujours les lignes du genre "i++ + i++" qui sont quasi-imprevisibles...
Les questions qui se posent ici se posent pour tout compilateur. Chaque auteur choisit une solution qui lui est propre...

Lever les ambiguités, c'est s'astreindre a ne pas utiliser des instructions de ce type !!
Ce travail doit etre fait par le codeur, pas par le compilateur.
Je commence a reussir a faire bouger un sprite. Ou bah je suis content !

35

Blue_Z
>[i] Je ne suis pas d'accord, une ligne comme "a=i++; " est vraiment dépourvue d'ambiguïté.
pourtant c'est une mise en garde toute droit sortie du bouquin de Kernighan et Ritchie wink
[i]>"a[i]=i++; " : cette ligne place dans a la valeur de i, et ensuite incrémente i.
Je pense pour ma part que rien n' empeche le compilateur de copier la valeur de i qq part, de l'incrementer, et de copier la valeur ds le tableau à l'indice correspondant à la nouvelle valuer de i.

naholyr
attention ou par LINT cool
[edit]Edité par Pen^2 le 15-11-2001 à 18:36:22[/edit]

36


Ce qu'a dit Pen² me plaît bien. Je vais implémenter ces opérateurs à ma façon (inspirée du PpHdStyle) wink

Kevin : malheureusement un des objectifs de l'Azur est d'être TRES rapide à compiler. Je ne peux pas me permettre ces 3 passes.

Il faut savoir que mon compilo compile + de 30 % plus vite que GTC, et je tiens à garder mon avance.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

37

arf...
Les lois de la concurrence....
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

38

He oui.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

39

héhé smile

40

c ce qui fait progresser...
Que serait Windows sans Linux ?
Ou sans MacOS...

=> toujours MS-DOS ?
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

41

au - ça serait stable grin

42

oué, c vrai que le ODS, ça buggait pas souvent...
Et puis, au moins, mon père ferait pas n'importe quo iac le PC...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

43

Tout à fait squale92, c'est pour ça que, comme je te le disais tout à l'heure, le compilo produira un jour du code optimisé, mais c'est pas dans mes priorités.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

44

oué.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

45

gavé

46

ca a peut-être aucun rapport, mais comment faire un truc comme
if (*a++ == 1 && *a==2) {
...

pour que le a++ se fasse ressentir dans la 2ème partie du test?
[edit]Edité par ExtendeD le 18-11-2001 à 19:13:34[/edit]

47

houla...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

48

Mets 2 ifs:
if(*(a++)==1) if(*a==2) ...
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

49

Qui parle encore de C K&R ? On est au C discipliné maintenant, la 3ème génération, donc K&R, plus là...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

50

K&R restent qd même les fondateurs de ce langage, et leur bouquin reste une référence connue...
Quiconque sait programmer en C doit au moins savoir ce que signifient les lettres K&R !!!

(le seconde édition de leur bouquin "The C programming language" traite de l'ANSI-C, qui est loin d'être dépassé... Même si TIGCC utilises du GNU-C, toutes les fonctionnalités ANSI sont présentes (du moins tout ce que j'ai eu besoin d'utiliser !)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

51

Le C K&R n'est pas entièrement dépassé: GCC est écrit en C K&R, A68k aussi.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

52

oué...
Et le C K&R est qd même la base du C !!!
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

53

Et le C discipliné, vous ne connaissez pas ?
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

54

Ca m'intéresse, parle un peu de ce que tu appelles le C discipliné smile
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

55

--------------------------------------------------------------------------------
ca a peut-être aucun rapport, mais comment faire un truc comme
if (*a++ == 1 && *a==2) {
...

pour que le a++ se fasse ressentir dans la 2ème partie du test?
--------------------------------------------------------------------------------

Mets 2 ifs:
if(*(a++)==1) if(*a==2) ...
--------------------------------------------------------------------------------


ac 2 if imbriqué, mefie toi si tu mets un else apres, parce que dans
if (***)
   if (***)
   ;
else
   ;

le else est pour le 2eme if. (ça saute pas aux yeux ac l'indentation)

utilise :

if (***) {
   if (***)
   ;
   }
else
   ;

[edit]Edité par Pen^2 le 21-11-2001 à 19:20:31[/edit]

56

Je me suis fait avoir y'a pas longtemps avec ça wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

57

Le C discipliné empêche certaines choses avec un utilitaire appelé dcc qui vérifie le code source. Le seul truc, c'est qu'il y a des pargmas partout et qu'ils sont indispensables. Mais je ne me rappelle plus de la suite. Il faut que je cherche le bouquin chez mon frangin. En tout cas, ça élimine certaines erreurs de compilation. y'a des conventions d'appel de fonction et de transfert d'informations chiantes mais utile - personnellement -
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

58

Je préfère le C indiscipliné, alors. grin
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

59

arf...
même chose que Kevin grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

60

pour verifier les sources, il y a deja LINT