In Python hatten wir die Sequenz, Iteration (for, while) und Selektion (if). In C finden sich dafür natürlich Entsprechungen.
Die Sequenz ist wieder durch Hintereinanderschreiben zu erreichen; neu sind lediglich die Semikola:
msg = "Der Zähler ist jetzt %d\n"; count = 3 printf(msg, count);
Gegenüber Python wichtigster Unterschied: Die Bedingung muss immer in Klammern stehen.
if (str[0]=='a') { printf("%s fängt mit a an\n", str); } else { printf("%s fängt nicht mit a an\n", str); }
Allgemein:
ifClause ::= | "if" "(" logicExpr ")" CmpdStmt |
["else" CmpdStmt ] | |
CmpdStmt ::= | statement | "{" {statement } "}" |
Verbundanweisungen werden in C durch Klammern und nicht durch Einrückung definiert:
if (a%2!=0) b = a/2+1; printf("a ist ungerade\n"); else printf("a ist gerade\n");
– im if-Zweig fehlt die Klammer. Schlimmer noch das dangling else problem:
if (a%4!=0) if (a%2!=0) printf("a ist ungerade\n"); else printf("a ist durch 4 teilbar\n");
Das else gehört zum zweiten if! Deshalb: Immer geschweifte Klammern setzen.