bool x;
int y = 1, z = 1;
x = (y == 1 && z++ == 1);
x=true, y=1, z=2
dlaczego x=true
skoro z=2
czyli z++==1
nie jest prawdą
Wątek przeniesiony 2017-10-15 20:14 z C# i .NET przez ŁF.
bool x;
int y = 1, z = 1;
x = (y == 1 && z++ == 1);
x=true, y=1, z=2
dlaczego x=true
skoro z=2
czyli z++==1
nie jest prawdą
https://stackoverflow.com/a/17367075
z++ = Najpierw przypisuje wartość z do x, a później zwiększa
++z = Najpierw zwiększa, później przypisuje wartość z do x
bool x;
int y = 1, z = 1;
x = (y == 1 && ++z == 1);
Console.WriteLine(x);
piszę: False
bool x;
int y = 1, z = 1;
x = (y == 1 && z++ == 1);
Console.WriteLine(x);
piszę: True
int x = 1, y = 4, z = 2;
bool wynik = (x++ > 1 & y++ == 4 && z-- > 0);
a w tym przykładzie mimo, że jest y++ y=5
, dlaczego?
eucalyptus napisał(a):
int x = 1, y = 4, z = 2; bool wynik = (x++ > 1 & y++ == 4 && z-- > 0);
a w tym przykładzie mimo, że jest
y++ y=5
, dlaczego?
Kiedy y = 5
? Po postinkrementacji, a w nawiasie jest równe 4; Dostajesz false
, bo x++ > 1
jest nieprawdą, w tym momencie jest jeden. Jest dokładnie tak, jak napisał @WeiXiao.
@eucalyptus pisz jedna instrukcja => jedna linijka i nie bedziesz miec takich problemow