Konstanten
Manche Werte ändern sich nie, solange ein Programm läuft: der Mehrwertsteuersatz, die Zahl der Tage in einer Woche, die Höchstpunktzahl in einem Test. Dafür hat C Konstanten. Eine Konstante ist eine Variable mit const davor:
const double MWST_SATZ = 0.19;const (von englisch constant) bedeutet, dass sich der Wert nicht ändern kann. Eine Konstante bekommt ihren Wert, wenn sie angelegt wird, und behält ihn, bis das Programm endet. Konstanten schreibt man in GROSSBUCHSTABEN, mit Unterstrichen zwischen den Wörtern, damit man auf einen Blick erkennt, dass ein Name eine Konstante ist.
Warum schreibst du nicht einfach 0.19 in die Rechnung? Dafür gibt es drei gute Gründe:
- Der Name erklärt die Zahl.
preis * MWST_SATZsagt, was passiert; beipreis * 0.19musst du raten. - Wenn sich der Satz ändert, änderst du ihn an einer Stelle, und jede Rechnung, die ihn verwendet, ändert sich mit.
- Der Compiler passt auf. Wenn du eine Konstante aus Versehen änderst, lässt sich das Programm nicht kompilieren.
#include <stdio.h>
int main(void) {
const double MWST_SATZ = 0.19;
MWST_SATZ = 0.07;
printf("%.2f\n", MWST_SATZ);
return 0;
}Der Compiler meldet:
main.c:5:15: error: cannot assign to variable 'MWST_SATZ' with const-qualified type 'const double'Er sagt, dass du MWST_SATZ keinen neuen Wert zuweisen kannst, weil sein Typ const double ist. Ansonsten verwendest du eine Konstante wie jede andere Variable:
const double MWST_SATZ = 0.19;
double preis = 40.0;
printf("MwSt: %.2f €\n", preis * MWST_SATZ);Das gibt Folgendes aus:
MwSt: 7.60 €Und wie gibst du ein Prozentzeichen aus? In printf beginnt % eine Formatangabe wie %d. Um das Zeichen selbst auszugeben, schreibst du es doppelt, %%:
printf("Die MwSt beträgt %d%%\n", 19);Das gibt Folgendes aus:
Die MwSt beträgt 19%Mit nur einem %, wie in "Die MwSt beträgt 19%\n", lässt sich das Programm nicht kompilieren. Der Compiler meldet invalid conversion specifier '\x0a': Nach dem % hat er einen Buchstaben wie d erwartet, aber einen Zeilenumbruch gefunden (\x0a ist seine Schreibweise für \n).
So schreibst du es:
Anweisungen
- 1
Ein Test hat höchstens 50 Punkte. Lege am Anfang von
maineine KonstanteMAX_PUNKTEvom Typintmit dem Wert50an. - 2
Ändere das
printfso, dass es auch das Maximum ausgibt, entnommen aus der Konstanten:Punkte: 42 von 50 - 3
Gib in der nächsten Zeile das Ergebnis in Prozent aus: die Punkte mal 100, geteilt durch
MAX_PUNKTE. Multipliziere zuerst:42 / 50allein ist 0, wie du weißt. Das Prozentzeichen gibst du mit%%aus:Ergebnis: 84%