Jazyk C - otazky
- Ucednik
- Nováček

-
- Registrován: 21. lis 2007
Jazyk C - otazky
Prochazim Heroutovou Ucebnici jazyka C. Predesilam,ze jsem nikdy neprogramoval a nemam vubec zadne zaklady,takze budu mit asi primitivni otazky:
inkrement ++
dekrement --
jak spocitam,kdyz pise
int i = 5, j = 1, k;
i++ - i je 6
j = ++i; - j bude 7,i bude 7
j = i++; - j bude 7, i bude 8
k = --j + 2; - k bude 8, j bude 6, i bude 8
jak k temto hodnotam prisel?
inkrement ++
dekrement --
jak spocitam,kdyz pise
int i = 5, j = 1, k;
i++ - i je 6
j = ++i; - j bude 7,i bude 7
j = i++; - j bude 7, i bude 8
k = --j + 2; - k bude 8, j bude 6, i bude 8
jak k temto hodnotam prisel?
- Ramirez
- Začátečník

-
- Registrován: 10. kvě 2007
- Bydliště: Praha 4
- Kontaktovat uživatele:
Prepis pravidiel inkrementu:
(++x) je to isté, čo (x = x + 1)
(x++) je to isté, čo ((x = x + 1) - 1)
Ak to aplikujem na tvoj príklad:
(++x) je to isté, čo (x = x + 1)
(x++) je to isté, čo ((x = x + 1) - 1)
Ak to aplikujem na tvoj príklad:
Kód: Vybrat vše
int i = 5, j = 1, k;
i++; ... (i = i + 1) - 1; ... (i = 5 + 1) - 1; --- i je 6 (- 1 sa zahodí)
j = ++i; ... j = (i = i + 1); ... j = (i = 6 + 1); ... j = i = 7; --- j bude 7,i bude 7
j = i++; ... j = ((i = i + 1) - 1 ... j = (i = i + 1) - 1; ... j = (i = 7 + 1) - 1; ... j = (i = 8 ) - 1; ... j = 7; --- j bude 7, i bude 8
k = --j + 2; ... k = (j = j - 1) + 2; ... k = (j = 7 - 1) + 2; ... k = (j = 6) + 2; ... k = 8; --- k bude 8, j bude 6, i bude 8- Ucednik
- Nováček

-
- Registrován: 21. lis 2007
- Ramirez
- Začátečník

-
- Registrován: 10. kvě 2007
- Bydliště: Praha 4
- Kontaktovat uživatele:
Úplne sa nevytratí, ale keďže výsledok vonkajšej zátvorky ((i = i + 1) - 1) nie je priradený do žiadnej premennej, tak sa jeho hodnota stratí. Je to podobné, akoby si niekde v kóde napísal:
Je to síce správne, sčítanie sa vykoná, ale výsledok 2 sa potom hneď zahodí.
Kód: Vybrat vše
1 + 1;- €agle
- Středně pokročilý

- Registrován: 13. lis 2003
- Bydliště: Vlastní 3D svět :)
- Kontaktovat uživatele:
++i je preinkrement, tzn nejprve se zvysi i a az nasledne se dela dalsi operace. Jinymi slovy
Priklad:
Naopak i++ je postinkrement, tzn nejprve se vykona operace a az potom se i zvysi. Jinymi slovy
Priklad:
V pripade --i a i-- je to obdobne...
Kód: Vybrat vše
b = ++a;
je stejne jako
a = a + 1;
b = a;Kód: Vybrat vše
int a = 5;
int b = ++a;
cout << a; //vypise 6
cout << b; //vypise 6Kód: Vybrat vše
b = a++;
je stejne jako
b = a;
a = a + 1;Kód: Vybrat vše
int a = 5;
int b = a++;
cout << a; //vypise 6
cout << b; //vypise 5Eagle3D Engine under developement
Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
- Ucednik
- Nováček

-
- Registrován: 21. lis 2007
Jak to podavas ty, tak oboje znamena de facto to same, rozdil pouze v tom, ze inkrement ++a se provede ihned a inkrement a++ az po vykonani operace?€agle píše:++i je preinkrement, tzn nejprve se zvysi i a az nasledne se dela dalsi operace. Jinymi slovyPriklad:Kód: Vybrat vše
b = ++a; je stejne jako a = a + 1; b = a;Naopak i++ je postinkrement, tzn nejprve se vykona operace a az potom se i zvysi. Jinymi slovyKód: Vybrat vše
int a = 5; int b = ++a; cout << a; //vypise 6 cout << b; //vypise 6Priklad:Kód: Vybrat vše
b = a++; je stejne jako b = a; a = a + 1;V pripade --i a i-- je to obdobne...Kód: Vybrat vše
int a = 5; int b = a++; cout << a; //vypise 6 cout << b; //vypise 5
Oboji je + 1, jedno pred a druhe po...
- Ucednik
- Nováček

-
- Registrován: 21. lis 2007
- Ramirez
- Začátečník

-
- Registrován: 10. kvě 2007
- Bydliště: Praha 4
- Kontaktovat uživatele:
Nie je to lepšie, pretože výrazy
nerobia to isté. Ak si to chceš overiť, tak si na to sprav pomocný program. Líšiť sa budú pre c z veľkej abecedy. Napríklad ak c = 'B', tak prvý výraz dosadí do c := 'b' a druhý výraz tam dosadí asi číslo "mínus počet písmen v abecede".
Pôvodný výraz, teda:robí asi toľko, že veľké písmená zmenší na malé a s ostatnými písmenami nerobí nič.
Kód: Vybrat vše
c = (c >= 'A' && c<= 'Z') ? c + ('a' - 'A') : c;
/* a */
c = (c >= 'A' && c<= 'Z') ? ('a' - 'z') : c;Pôvodný výraz, teda:
Kód: Vybrat vše
c = (c >= 'A' && c<= 'Z') ? c + ('a' - 'A') : c;- Ucednik
- Nováček

-
- Registrován: 21. lis 2007
ok, diky
dalsi dotaz:
str.59
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
if (x[k] == 0)
goto error;
a = a + b[j] / x[k];
}
} /* nevim proc se mi ty zavorky nechtej odsunout */
}
...
radek a = a + b[j] / x[k]; znamena, a (ev.i), b(ev.j) a x(ev.k)
jelikoz jsem samoucednik, nikde predtim jsem to v knize nevidel...
diky
special thx to Ramirez
dalsi dotaz:
str.59
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
if (x[k] == 0)
goto error;
a = a + b[j] / x[k];
}
} /* nevim proc se mi ty zavorky nechtej odsunout */
}
...
radek a = a + b[j] / x[k]; znamena, a (ev.i), b(ev.j) a x(ev.k)
jelikoz jsem samoucednik, nikde predtim jsem to v knize nevidel...
diky
special thx to Ramirez
- €agle
- Středně pokročilý

- Registrován: 13. lis 2003
- Bydliště: Vlastní 3D svět :)
- Kontaktovat uživatele:
Presne tak to jeUcednik píše:Jak to podavas ty, tak oboje znamena de facto to same, rozdil pouze v tom, ze inkrement ++a se provede ihned a inkrement a++ az po vykonani operace?
Oboji je + 1, jedno pred a druhe po...
Co se toho druheho tyce, tak moc nerozumim otazce... a = a + b[j] / x[k]; znamena ze k hodnote v poli A na indexu I se pricte hodnota v poli B na indexu J vydelena hodnotou v poli X na indexu K... Jinak pouzivani goto je prasarna, tak se tomu snaz vyhnout
Eagle3D Engine under developement
Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
- Ucednik
- Nováček

-
- Registrován: 21. lis 2007
€agle píše: Co se toho druheho tyce, tak moc nerozumim otazce... a = a + b[j] / x[k]; znamena ze k hodnote v poli A na indexu I se pricte hodnota v poli B na indexu J vydelena hodnotou v poli X na indexu K... Jinak pouzivani goto je prasarna, tak se tomu snaz vyhnout
je mi jasny,nerozumis otazce, protoze je to primitivni
zkratka predtim se to v knize nikde nevyskytovalo, takze nevim, co je pole A, index I apod.
A hodnoty ve formatu "a" se predtim nikde nevyskytovaly...
- €agle
- Středně pokročilý

- Registrován: 13. lis 2003
- Bydliště: Vlastní 3D svět :)
- Kontaktovat uživatele: