Kolejność działań.

Kolejność działań.
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam. Mam pytanie odnośnie kolejności wykonywania działań w języku C. Dla przykładu mamy działanie :" p = p + q && n == 10; ". Chciałbym zapytać czy kolejność wygląda tak:
Najpierw działania algebraiczne
Później przyrównywania
A na końcu operatory logiczne z kolejnością:
1.negacja
2. &&
3 Na końcu ||
Pozdrawiam.

mwl4
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 404
  • Rejestracja: dni
  • Ostatnio: dni
0

Ok dziękuję, ale dlaczego w przypadku tej pętli w języku C " for(a=1,b=2;b<=6;b+=2) a+= (b++ > 2) && (++a > 1); " postnkrementacja wykona się dla b, a zmienna a nie zmieni się za pierwszym razem skoro && jest po niej?

  • Rejestracja: dni
  • Ostatnio: dni
0

Czyli jak mam rozumieć jeżeli pierwszy warunek przy && jest niespełniony, to drugi nawet nie jest brany pod uwagę przez kompilator?

mwl4
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 404
0

To też ( http://stackoverflow.com/questions/26281447/logical-in-c )

Ale ogólnie takie coś: a += ++a; to jest UB.

Mnie się wydaje, że ty mylisz dwie rzeczy.
++ to jest operator inkrementacji, on zmieni wartość zmiennej przy której stoi, np:

Kopiuj
 int a = 5;
 ++a;
 // teraz a = 6.

To czego ci potrzeba to jest z tego co widzę zwykłe dodawanie.

Zamiast:

Kopiuj
 for(a=1, b=2; b <= 6; b += 2)
   a += (b++ > 2) && (++a > 1);

tobie trzeba:

Kopiuj
 for(a=1, b=2; b <= 6; b += 2)
   a += (b + 1 > 2) && (a + 1 > 1);

Cokolwiek by to robiło.

  • Rejestracja: dni
  • Ostatnio: dni
0

Ok dzięki wielkie za pomoc

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.