Zmienna typu BOOL

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

EU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
0
Kopiuj
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ą

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5227
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

Kopiuj
bool x;
int y = 1, z = 1;
x = (y == 1 && ++z == 1);
Console.WriteLine(x);
piszę: False
Kopiuj
bool x;
int y = 1, z = 1;
x = (y == 1 && z++ == 1);
Console.WriteLine(x);
piszę: True
EU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
0
Kopiuj
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?

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5027
0
eucalyptus napisał(a):
Kopiuj
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.

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.