Bár nem tervezek minden laborkártya paklit itt poszt formájában megbeszélni, de a mai laborok azt sugallják, hogy még a mostanit szükséges lehet kicsit segíteni, mert ma számos hallgatót az mentett meg a negatív értékeléstől, hogy a kérdésekkel foglalkoztak saját fórumaikon (de ott vélelmezhetően hibásan kialakult szakmai álláspontokat tettek a magukévá). Javaslatom, hogy a kártyákat tartalmazó előadás kommentjeként kérdezzenek és kapjanak választ az érdeklődők, így a szélesebb nyilvánosság egyben védelmet is jelent. Nem beszélve arról, hogy a laborvezetők is ezt látják :)
Tehát röviden tárgyaljuk a 2. előadás laborkártyáit.
Állítsd precedencia szerint sorrendbe! Mondanom sem kell: könyv, jegyzet, bármi használható közben, mint a vizsgán, de itt gyorsan jöjjenek a válaszok! Természetesen az operátorok jelentését is tudni kell.
Itt azt várom, hogy a hallgató tudjon mutatni valahol egy precedencia táblázatot és megmutatni, hogy melyik precedenciája magasabb, alacsonyabb stb.
Mi a különbség az if-ek fejében a két kifejezés között (ha van)
if(b & 0x80 == 0) …
if((b & 0x80) == 0) …
"Az imént említett táblázatban" látható, hogy a == precije alacsonyabb, mint bitenkénti ÉS-é, ezért a zárójelek hiányában először hasonlít, utána ÉSel. Pedig a programozó szándéka nyilván az volt, hogy először maszkol, aztán hasonlít.
Alábbi kód kapcsán: mit mond a C a + operátor operandusainak kiértékelési sorrendjéről?
#include <stdio.h>
int
novel_eggyel (int *a)
{
return ++ * a;
}
int
csokkent_eggyel (int *a)
{
return -- * a;
}
int
main (void)
{
int a = 0;
printf ("%d\n", novel_eggyel (&a) + csokkent_eggyel (&a));
a = 0;
printf ("%d\n", csokkent_eggyel (&a) + novel_eggyel (&a));
return 0;
}
Hogy nem meghatározott, azaz minden olyan válasz, ami "balról-jobbra", "jobbról-balra" szavakkal kezdődik, az hibás. Ez arra is példa, hogy a kipróbálás itt nem az a szilárd talaj, amit megszoktunk, hogy általában az lehet... De csak gondolj bele, egyszer azt írod a progidba, hogy A+B, közvetlenül utána, de egy ugyanolyanra visszaállított szituációban, hogy B+A és az elsőre 1-et ad, a másodikra -1-et, az nyilván azt jelenti, hogy az ilyen kód írását kerüld el!
Ablokkosak elég szimplák, próbáld ki, ha mégis bizonytalan vagy.
Az strncpy man lapjáról "koppintott" implementáció és továbbfejlesztései lerágott csont, egy külön posztunk is volt erről.
Az érvényességi tartományról szóló kártyát érdemes kipróbálni, olyasmit kérdezhetünk ennek kapcsán, hogy a hivasok_szama miért extern?
A fork()-al "ködösített" hatáskör-élettartam elég szimpla, ha megfigyeled, hogy csak a gyerek ág növel, aztán pedig kilép... de erről is külön értekeztünk már.
Az tetszett, hogy a mutatós-mutogatós kártyát mindenki vágta: