Ik heb voltooid een inleiding tot programmeren met Python en ik ben meer gewend aan Python dan aan C, dus ik kan de twee misschien door elkaar halen. C geeft me allerlei soorten fouten. Ik heb geprobeerd dingen te veranderen, maar opmerken lijkt te werken; zodra ik de syntaxis van C heb ontdekt, ga ik dit programma waarschijnlijk herschrijven.
#include <stdio.h> #include <cs50.h> int main(void) { int num; do { int num = getint(); while( int num < 0 or int num > 23 ); } }
Fouten:
mario.c:13:9: error: expected expression while( int num < 0 or int num > 23 ); ^ mario.c:16:1: error: expected "while" in do/while loop } ^ mario.c:9:2: note: to match this "do" do ^ mario.c:16:2: error: expected "}" } ^ mario.c:6:1: note: to match this "{" { ^ 3 errors generated. jharvard@appliance (~/Dropbox): make mario clang -ggdb3 -O0 -std=c99 -Wall -Werror mario.c -lcs50 -lm -o mario mario.c:13:9: error: expected expression while( int num < 0 or int num > 23 ); ^ mario.c:16:1: error: expected "while" in do/while loop } ^ mario.c:9:2: note: to match this "do" do ^ mario.c:18:1: error: expected "}" ^ mario.c:6:1: note: to match this "{" { ^ 3 errors generated.
Antwoord
Het is een verkeerd geplaatste accolade.
do { int num = GetInt(); } while( int num < 0 || int num > 23 );
Je wilt de do
-instructie tussen accolades plaatsen, maar de while-voorwaarde buiten houden. Wees voorzichtig met hoofdletters. Functies zijn hoofdlettergevoelig. Je kunt ook “het woord niet gebruiken” of “maar in plaats daarvan ||
(de dubbele pijp) gebruiken. (En voor toekomstig gebruik &&
betekent “en”).
Probeer dat eens!
Ook de Lecture Notes van Week 1: Programmeerconstructies in C heeft veel voorbeelden van syntaxis voor verschillende lussen, voorwaarden, enz. Het kan de moeite waard zijn om bij de hand te houden als referentie terwijl je hieraan werkt.
Brenda.
do
instructie tussen haakjes, " bedoel je accolades{}
in plaats van haakjes()
?