Ładny brzuch
Witam
Czy kto mi mgby wytumaczy jak rowe na rowie dlaczego po skompilowaniu tego programu:
#include <stdio.h> int x, y, a, b; int main() { a = b = 20; printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); return 0; }
otrzymuje takie wyniki
a=22, b=18, x=40, y=1
a=24, b=16, x=40, y=5
a=26, b=14, x=40, y=9
a=28, b=12, x=40, y=13
a=30, b=10, x=40, y=17
chce zaznaczy e dopiero ucze si jezyka C
poczytaj sobie o postinkrementacji, preinkrementacji itd. to zrozumiesz
Przeanalizujmy pierwsze printf:
printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b);Po pierwsze wiedz, e wszystkie te dziaania na zmiennych wykonuj si "od tyu", czyli zaczynajc od "--b" w tym wypadku.
Czyli tak:
1. Na pocztku a = 20, b= 20.
2. Wykonuje si --b, wic a = 20, b = 19.
3. Wykonuje si a- b, czyli 39.
4. Dopiero teraz wykonuje si a++ (gdyby byo to ++a to dodanie 1 do a wykonaoby si przed odjciem b od a), a = 21, b = 19.
5. Wykonuje si a+b = 40
6. Wykonuje si b--, czyli a = 21, b = 18
7. Wykonuje si a++, wic a = 22, b = 18
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Czy kto mi mgby wytumaczy jak rowe na rowie dlaczego po skompilowaniu tego programu:
#include <stdio.h> int x, y, a, b; int main() { a = b = 20; printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b); return 0; }
otrzymuje takie wyniki
a=22, b=18, x=40, y=1
a=24, b=16, x=40, y=5
a=26, b=14, x=40, y=9
a=28, b=12, x=40, y=13
a=30, b=10, x=40, y=17
chce zaznaczy e dopiero ucze si jezyka C
poczytaj sobie o postinkrementacji, preinkrementacji itd. to zrozumiesz
Przeanalizujmy pierwsze printf:
printf("\na= %d, b= %d, x = %d, y = %d", a, b, a+++b--, a++ - --b);Po pierwsze wiedz, e wszystkie te dziaania na zmiennych wykonuj si "od tyu", czyli zaczynajc od "--b" w tym wypadku.
Czyli tak:
1. Na pocztku a = 20, b= 20.
2. Wykonuje si --b, wic a = 20, b = 19.
3. Wykonuje si a- b, czyli 39.
4. Dopiero teraz wykonuje si a++ (gdyby byo to ++a to dodanie 1 do a wykonaoby si przed odjciem b od a), a = 21, b = 19.
5. Wykonuje si a+b = 40
6. Wykonuje si b--, czyli a = 21, b = 18
7. Wykonuje si a++, wic a = 22, b = 18