yms: (Default)
Michael Yutsis ([personal profile] yms) wrote2008-09-23 12:07 pm
Entry tags:

ох уж этот c#...

(вычисления в окне Immediate)

-1==-1
true
-1==0xffffffffu
false
(uint)-1==0xffffffffu
true
1==1u
true

[identity profile] tridecahedron.livejournal.com 2008-09-23 09:21 am (UTC)(link)
"А нам все равно"

[identity profile] llasta.livejournal.com 2008-09-23 09:29 am (UTC)(link)
а я знаю целую одну программерскую шутку!
man woman
make love

щитова?)

[identity profile] yms.livejournal.com 2008-09-23 09:34 am (UTC)(link)
круто! но это юниксоидное :)

[identity profile] llasta.livejournal.com 2008-09-23 09:59 am (UTC)(link)
меня общение с линукс-девелоперами в своё время испортило :)

[identity profile] vodianoj.livejournal.com 2008-09-23 02:42 pm (UTC)(link)
Альтернативы (типа 1!=1у или -1=0хффффффффу) не лучше, ИМХО
Можно, правда, всегда требовать явного преобразования типов, что однако может привести к понижению читабельности кода, за что это собственно и будет зарубленно...


[identity profile] yms.livejournal.com 2008-09-23 03:08 pm (UTC)(link)
Ну, в Си, где второе имеет место быть, как-то более естественно и ожидаемо. А тут имеет место быть забавная штука: в случае обоих "интов" вызывается метод int.Equals(int), в прочих случаях - int.Equals(object), который возвращает false для всех не-intов. А при 1==1u крмпилятор, возможно, делает неявный typecast, и на самом деле вызывается uint.Equals(uint).
Edited 2008-09-23 15:08 (UTC)