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?
A jesteś pewien, że to nie jest umieszczone w jakiejś pętli ? :>
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);
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ę.
Z tego co ja obliczyłem też mi tak wychodzi, odpowiedzi są podane w tej samej książce tuż pod zadaniem.
Wrzuć skan strony z książki...może errata jakaś do niej była? :)
n = 10;
p = 5;
q = 10;
q = n<p?n++:p++;
q = ((n<p) ? n++ : p++);
q = p++
To wiemy ;)
Ale skąd wzięły się podane przez @jaśko1 wyniki?
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 ;)
I to chyba wyjaśnia całe zamieszanie.