1

Est-ce que qqn se souvient du post sur le swap de deux variables en utilisant que des xor? Merci si vous le retrouvez ou s'il a été effacé que vos vous en souvenez. A+
NiFF@fr.st

2

a^=b^=a^=b

Edit : petite correction grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

b^=a^=b^=a

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

4

a^=b^=a^=b;

mais il y a un warning : "Operation on 'a' may be undefined"

5

Ah bon, désolé grin
Si y'a un warning, vaut pê mieux utiliser une méthode un peu moins tirée par les cheveux...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

Sinon, tu le fais en 2 fois, pour éviter le warning : b^=a^=b;a^=b;

7

En tout cas, je pense (pas sûr à 100cheeky que le warning soit erroné.
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é

8

erroné, cad ?
Il ne devrait pas être là ?

9

C'est ça.
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é

10

a^=b; b^=a; a^=b; ne fait aucun warning ...

11

Kevin : moi aussi je le pense pencil
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.

12

Je ne pense pas... Dans a+=b, b est-il nécessairement évalué avant a? (c'est le cas dans GTC mais je ne sais pas si c imposé par ANSI ou pas) Si ça n'est pas le cas, a+=b pas strictement équivalent à a=a+b...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

13

La convention du C est claire : les expressions de la forme x^= y sont évaluées de droite à gauche, y pouvant être une expression de la forme a^= b et ainsi de suite.
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.

14

en es-tu absolument certain? c'est évidemment le cas pour a=b, mais pas forcément pour a+=b...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

15

Mon bouquin dit des conneries alors roll
Et l'aide de TIGCC aussi roll
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.

16

je ne vois pas où tu vois ça dans l'aide de TIGCC... je ne vois que :
The expression
expr1 op= expr2
has the same effect as
expr1 = expr1 op expr2 except that the lvalue expr1 is evaluated only once. For example, expr1 += expr2 is the same as expr1 = expr1 + expr2.


cf http://www.lysator.liu.se/c/c-faq/c-4.html#4-1 : même dans a=b, l'ordre d'évaluation n'est pas défini smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

17

Il me semble avoir lu dans l'aide de TIGCC que l'ordre d'évaluation de l'opérateur '=' et ses dérivés était droite->gauche black
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.

18

Peut-être, mais où? Je veux bien te croire si tu me montres l'endroit où tu l'as vu smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

19

Pff je sais plus, c'était en parcourant la doc, je crois me souvenir avoir vu ça sad

Mais mon cours de C est formel de toute façon. Attend 2 secondes magic
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.

20

Excuse-moi mais :
4.1: Why doesn't this code:

a[i] = i++;


work?
The subexpression i++ causes a side effect -- it modifies i's value -- which leads to undefined behavior if i is also referenced elsewhere in the same expression. (Note that although the language in K&R suggests that the behavior of this expression is unspecified, the ANSI/ISO C Standard makes the stronger statement that it is undefined -- see question 5.23.)
References: ANSI Sec. 3.3 p. 39.


je trouve ça pas mal formel wink

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

21

Dans cette expression, l'incertitude n'est pas due à l'ordre d'évaluation !
Elle vient du fait que tous les compilos ne vont pas incrémenter i au même "moment". Certain vont l'incrémenter juste avant d'affecter, d'autre vont l'incrémenter après l'évaluation complète de l'expression.
Dans le premier cas, c'est l'élément i+1 qui est affecté, dans le second, c'est l'élément i
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.

22

Pollux : Thibaut > "Mais mon cours de C est formel de toute façon. Attend 2 secondes magic"

Je cite http://www-clips.imag.fr/commun/bernard.cassagne/Introduction_ANSI_C/node101.html :
[14]Un opérateur a une associativité à droite quand : 
a op b op c signifie a op ( b op c).

priorité |              Opérateur             | Associativité
---------+------------------------------------+--------------
         |                 ...                |
2        | = += -= *= /= %= >>= <<= &= ^= |=  |  Droite
         |                 ...                |[/14]


Ou encore tout le premier chapitre de http://www.enstimac.fr/~gaborit/lang/CoursDeC/CoursDeC-node6.html :
[14]Ordre de priorité des opérateurs :

              Opérateur             | Evaluation
------------------------------------+------------
                 ...                |
 = += -= *= /= %= &= ^= |= <<= >>=  |  <--
                 ...                |

...

l'expression : 
a -= b -= c;  

est équivalente à : 
a -= (b -= c);  

puisque l'opérateur -= est évalué de droite à gauche.[/14]


Ou encore : http://etna.int-evry.fr/COURS/COURSC/node64.html, à la fin : "opérateurs binaires d'affectation (associativité de droite à gauche)"

Ou encore mon cours de C qui dit la même chose.
Ou encore ce qu'il me semble avoir lu dans la doc de TIGCC.
Ou encore ce qu'il semblait à Kevin.
Ou encore le fait que a^b^a^b donne bien le résultat prévu.


Toujours pas convaincu ?
zzz
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.

23

Mais oui prends moi pour un con smile


roll Tu confonds associativité et ordre d'évaluation.

Il est évident que a^=b^=a^=b^=a va être parsé comme a^=(b^=(a^=(b^=a)))

En revanche, en notant x = 'b^=a^=b^=a' rien ne nous dit que dans a^=x, le compilo ne va pas d'abord évaluer a (en le mettant par exemple dans un registre), puis calculer x, puis calculer a^x en le mettant dans a... Et si c'est le cas alors on n'aura pas le résultat voulu.

Donc non, le C ne définit pas d'ordre d'évaluation pour x=y ou x+=y, ce qui justifie le fait que a[i]=i++ ne marche pas ; en effet, si l'ordre d'évaluation était garanti de droite à gauche, alors ce serait équivalent à 'a[i+1]=i; i++;'

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

24

I disagree with you fuck

Ceux qui veulent GTC vous pouvez le trouver là : http://alineasofts.free.fr/extern/GTCbeta31-10-02.zip
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.

25

lol, je me demande ce qu'il a uploadé.. je v regarder.

26

La force de tes arguments me frappe à tel point que je suis désormais convaincu que le warning de TI-GCC est erroné wink

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

27

grin
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.

28

Thibaut>erf, t'aurrais pu mieux choisir zzz

29

T'aurais au moins pu choisir un zip qui avait la même taille que l'original embarrassed

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

30

Quoi !??????? Elle est trop b***e eek
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.