Diskuze: Prosím o kontrolu otázek a odpovědí
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
A proč si nenapíšeš ty otázky na syntaxi do nějakého IDE, co ti
řekne, jestli to je validní syntaxe (něco, co to skutečně analyzuje, ne
třeba Netbeans ) ?
Co si budeme povídat, syntaxe C (především tedy deklarace typů a
proměnných) je přinejlepším dost nešťastná a nejlepší je to zkusit
1 - pouze c, d, f
2 - a, d, f, g
3 - AFAIK C nezná 1..4 (to je pascalovská konstrukce), takže je to syntax
chyba.. Kromě toho tam chybí break, takže b ani nemůže být 2, protože se
hned následně vykoná b = 5
4 - hodnota a je 5 (argc = argument count).. záleží ovšem na tom, jestli tam
je napsána i definice fce main, kde to musí být uvedeno jako argument -
main(int argc, char **argv), jinak je argc samozřejmě nedefinován.
5 - a by mělo být správně.. Jinak na deklarace se docela hodí https://cdecl.org/
Zkus do odpovědi rozepsat všechny kódy v otázkách - co dělají.. Zřejmě některé věci nevíš nebo jsi je špatně pochopil
Ahoj, taky jsem to zkoušel . Já si třeba nejsem jist u toho příkladu č. 2. Ono to zapsat do VS pomůže, ale pořád jsou tam otázky, kde mi VS moc nepomůže
Jinak předpokládám, že "syntakticky správně" == odpovídá normě... Některé překladače ti některé syntaktické chyby hodí jako warning (třeba chybějící return ve funkci co něco vrací.. tu také záleží jaký standard - dřívější tuším vrátily nějakou default hodnotu, takže return nebyl vyžadován, od C99 nebo C11 je to ale AFAIK povinné).
Děkuju moc za odpovědi. Zkusím to ještě trochu vypilovat a kdyžtak bych se ozval .
Špatně, ty musíš chtít dělat testy na 100%.
Dále musíš být schopen své odpovědi vždy obhájit a vysvětlit.
Znění některých otázek je neúplně a ty musíš vysvětlit pro co to
platí a pro co ne.
Odpovědi.
1a) špatně - funkce musí vracet hodnotu
1b) špatně - návratová hodnota není definována (varování)
1c) správně
1d) správně
1e) špatně - void nesmí vracet hodnotu
1f) správně
2a) správně
2b) špatně
2c) špatně
2d) špatně - vně funkce, správně - uvnitř funkce (a=b=5; je brán jako
přiřazovací příkaz nikoli definice)
2e) špatně - (neúplná deklarace)
2f) správně
2g) správně
3b) špatně - neplatný zápis case
PS: příkaz break není povinný ve switch. Avšak je třeba myslet na to že
je-li vynechán, pokračuje zpracování programu do dalšího case nebo default
(pokuď existují).
4a) pokud int main(int argc, char *argv[])
4c) v ostatních případech (neznámý idetifikátor)
5c) a je deklarováno jako desetiprvkové pole ukazatelů na typ int
Překladače bývají občas velmi horlivé v případě výpisu chybových hlášek (dle úrovně).
Ahoj, děkuju za vysvětlení.
Ještě mi trochu dala zabrat otázka na označení pravdivých tvrzení.
Myslím že jsem tam napoprvé nasekal chyby a strhlo mi to dost bodů -
Podruhé jsem vybral C, D, E, F, G, H.
Zkoušel jsem to vše kompilovat a vyšlo mi to takto. Googlení tohohle v mém případě bohužel moc úspěšné nebylo, tak jsem to nasimuloval a nevyhazovalo mi to chyby, tak snad to bylo správně.
Zobrazeno 10 zpráv z 10.