Rozwiązanie q=n<p?n++:p++;

0

Proszę o podpowiedź jak przy danych n=10, p=5, q=10, z takiego wyrażenia: q=n<p?n++:p++; mogą wyjść następujące wyniki: n=15, p=11, q=10?

0

A jesteś pewien, że to nie jest umieszczone w jakiejś pętli ? :>

0

Jest to interesujący mnie fragment zadania z książki C. Delanny-a "Ćwiczenia z języka C". I jeszcze jedna rzecz która może jest najważniejsza natępny wiersz po tym wyrażeniu: q=n<p?n++:p++; to printf("C: n%d, p%d, q%d\n", n, p, q);

1

Jak dla mnie n = 10; p = 6; q = 5.

Skąd masz swoje wyniki? Nawet z tym co napisałeś tak będzie...chyba, że się mylę.

0

Z tego co ja obliczyłem też mi tak wychodzi, odpowiedzi są podane w tej samej książce tuż pod zadaniem.

0

Wrzuć skan strony z książki...może errata jakaś do niej była? :)

0
n = 10;
p = 5;
q = 10;

q = n<p?n++:p++;
q = ((n<p) ? n++ : p++);
q = p++
0

To wiemy ;)

Ale skąd wzięły się podane przez @jaśko1 wyniki?

1

Zadałem sobie trochę trudu i znalazłem treść zadania, już nie potrzebujemy skanu ;)

 
#include <stdio.h>

main()
{

int n=10, p=5, q=10, r;
r = n==(p=q);
printf("A: n=%d p=%d q=%d r=%d\n", n, p, q, r);
n=p=q=r=5;
n+=p+=q;
printf("B: n=%d p=%d q=%d\n", n, p, q);
q = n<p ? n++:p++;
printf("C: n=%d p=%d q=%d\n", n, p, q);
q = n>p ? n++:p++;
printf("D: n=%d p=%d q=%d\n", n, p, q);
}

Wynik, który podałeś jest prawidłowy...wystarczy, że rozwiążesz całe zadanie a nie tylko jedną z jego linii ;)

0

I to chyba wyjaśnia całe zamieszanie.

0

Temat można by uznać za zakończony ale ponieważ nie chcę zaśmiecać forum dlatego zadam pytanie tutaj (chyba nadrzędne do tego tematu) a mianowicie skąd wiadomo jaka jest kolejność wykonywania operatorów? Poprzednie moje pytanie było dość trywialne z obecnej perspektywy i gdyby nie moja ignorancja poprzednich wyrażeń programu pewnie otrzymał bym poprawny wynik, nie mniej jednak kolega @stinger_t rozwiązał ten problem w 100%. A moje obecne pytanie wynika z przykładowo takiego wyrażenia a=c>b? c||e:b&&d!=a++d; Jak się do tego zabrać? Który operator jest najważniejszy a które będą wykonywane w następnej kolejności. Proszę was o schemat rozwiązywania takich problemów a nie gotowe rozwiązanie. Z góry dziękuję za pomoc.

0

@jaśko1 istnieje hierarchia operatorów. Wygooglaj ją sobie.

0

Najlepiej jeśli poszukasz w Google "priorytety operatorów".

Np. http://nadzieja.el-kfa.net/strony/operators.html

lub

http://pl.wikibooks.org/wiki/C/Operatory

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