Wątek przeniesiony 2017-10-15 20:14 z C# i .NET przez ŁF.

Zmienna typu BOOL

0
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ą

2

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
0
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?

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

1

@eucalyptus pisz jedna instrukcja => jedna linijka i nie bedziesz miec takich problemow

1 użytkowników online, w tym zalogowanych: 0, gości: 1