OVH Cloud OVH Cloud

illogisme dans vb.net ?

14 réponses
Avatar
jan
si je fais x = y = z = 255, j'obtient x = 0
si je fais x = 255, j'obtient x = 255

dans la logique je devrais aussi obtenir x = 0


l'operateur de comparaison ne devrait s'appliquer que si
il y a la presence de IF et ca faciliterait certaines
initialisations...

4 réponses

1 2
Avatar
c2i-Richard Clark [MVP]
lol, excellent

--
Richard Clark
http://www.c2i.fr - Le portail .NET
[Microsoft MVP .NET]
______________________________________________
'Au coeur de VB .NET' (MS Press, 430 pages, 34 euros)
http://www.amazon.fr/exec/obidos/ASIN/2100065645/c2ifrleportad-21
______________________________________________

"Eric Guillemette" wrote in message
news:
OK, OK, le mot avantage est peut être un peu fort, disons que j'entendais
plutôt par là une possibilité de plus. Je vois tout de même un avantage


lors
d'initialisation simple de variables:

x = y = 0;

Mais pour brouiller les pistes un tantinet:

x = 4;
++x += x++ + x;

C'est le genre de ligne de code à écrire lorsque ton patron te dis qu'il


ne
te reste que 2 semaines à travailler ou comme question boni à un examen


LOL

Eric

"c2i" wrote in message
news:%
> Avantage, avantage, j'en suis pas si sur.
> C# permet effectivement d'écrire plein de truc en une seule ligne, a


telle
> point que certaines lignes en deviennent incompréhensibles.
> C'est pour cela que je conseille fortement d'éviter, quelque soit le
> langage, des "concaténations" excessives.
> Ce qui a été confirmé d'ailleurs il y a peu par un dev de l'équipe du
> compilateur C#.
>
> Que vaut, a t'on avis x après:
> x=4;
> x += x++;
>
> LOL
>
> Richard
>
> "Eric Guillemette" a écrit dans le
> message de news:
>> Supposons que l'on fait des manupiluations sur des structures
>>
>> si j'écris x = y, la valeur de "y" sera copiée dans la variable "x"
>>
>> supposons:
>> x = 20
>> y = 30
>> z = 10
>>
>> Retirer l'option strict
>>
>> z = x = y
>>
>> Dans la variable z, il y aura false, donc 0 car dans la variable z,
>> j'affecte le résultat de la comparaison entre x et y. Ce qui me fait
> arriver
>> à la conclusion que l'opérateur le plus à gauche est celui


d'affectation
> et
>> les autres, de comparaison. J'ai lu ça aussi il y a quelques temps dans
>> un
>> livre, mais je ne me souviens plus lequel. Si je trouve, je t'en ferai
> part.
>>
>> L'avantage de C# à ce niveau permet d'affecter la valeur de y dans
> plusieurs
>> variables sur une seule ligne de code, c'est probablement ce que l'OP
>> essayait de faire, mais c'est impossible en VB.Net (du moins dans les
>> version 1.0 et 1.1 du framework, pour la 2.0, je ne sais pas)
>>
>> C#:
>> z = x = y; //y0, x0, z0
>>
>> Eric
>>
>> "Zazar" wrote in message
>> news:
>> > Bonsoir,
>> >
>> >> Étant donné qu'en vb.net, l'opérateur de comparaison et celui
>> > d'affectation
>> >> est le même, la norme est que l'opérateur le plus à gauche est celui
>> >> d'affectation et les autres, celui de comparaison. Cela évite les
>> > ambiguités
>> >> au niveau du compilateur entre les 2 opérateurs.
>> >
>> > Je pensais que la règle, c'était qu'une affectation ne renvoyait pas


de
>> > valeur et que donc à partir du moment où on utilisait la valeur d'une
>> > opération a=b, c'était l'opérateur de comparaison et sinon, c'était
>> > l'opérateur d'affectation. Cependant, je n'ai pas réussi à trouver de
>> > documentation en faveur de votre version ni de la mienne. Vous


pouvez
>> > confirmer ? (Juste par curiosité, je n'ai pas l'intention d'écrire un
>> > compilateur.)
>> >
>> > --
>> > Zazar
>> >
>> >
>>
>>
>
>




Avatar
Zazar
Bonsoir,

Mais pour brouiller les pistes un tantinet:

x = 4;
++x += x++ + x;




C'est valable dans quel langage ça ? ++x n'étant pas une l-value,
l'expression n'est pas correcte. Même en C, c'est interdit.

--
Zazar
Avatar
Bismark Prods
bien vu !

"Zazar" a écrit dans le message
de news:41587dca$0$12126$
Bonsoir,

> Mais pour brouiller les pistes un tantinet:
>
> x = 4;
> ++x += x++ + x;
>

C'est valable dans quel langage ça ? ++x n'étant pas une l-value,
l'expression n'est pas correcte. Même en C, c'est interdit.

--
Zazar




Avatar
Eric Guillemette
Et oui, j'ai fait le test par après et ça marche pas

"Zazar" a écrit dans le message
de news: 41587dca$0$12126$
Bonsoir,

Mais pour brouiller les pistes un tantinet:

x = 4;
++x += x++ + x;




C'est valable dans quel langage ça ? ++x n'étant pas une l-value,
l'expression n'est pas correcte. Même en C, c'est interdit.

--
Zazar





1 2