Numeralia in C
Einführende Beispiele
Auch eine Folge von Ziffern ohne Anführungszeichen ist ein Ausdruck. Solch ein Ausdruck kann eine Zahl angeben. Das folgende Programm gibt beispielsweise eine Textdarstellung des Wertes des Ausdrucks »123« aus.
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", 123 ); }stdout
123
Zur Ausgabe einer Zahl ist ein »d« an Stelle des bisher verwendeten »s« zu verwenden. Wir nennen einen Buchstaben wie »d« oder »s« einen Umwandlungsspezifizierer.
Wir müssen den bisher verwendeten Ausgaberahmen nun also etwas anpassen : Von nun an hat er zwei Ellipsen (Lücken) »…«. Die erste Ellipse kann einen Umwandlungsspezifizierer, also »s« oder »d«, aufnehmen. Die zweite Ellipse einen Ausdruck.
- Ausdruckrahmen
- #include <stdio.h>
- int main( void )
{ printf
( "%...\n", ... ); } - + zulässige Angaben
- »s« und »"Hallo, Welt!"«
- = main.c
#include <stdio.h>
int main( void )
{ printf
( "%s\n", "Hallo, Welt!" ); }stdout
Hallo, Welt!
- Ausdruckrahmen
#include <stdio.h>
int main( void )
{ printf
( "%...\n", ... ); }- + zulässige Angaben
- »d« und »123«
- = main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", 123 ); }stdout
123
Wir listen die Umwandlungsspezifizierer auf:
- Umwandlungsspezifizierer und Ausdrücke
... ... Merkwort
s "Text" s-tring
d 123 d-ezimalsystem
In den Ausdruckrahmen kann ein Umwandlungsspezifizierer und ein Ausdruck eingesetzt werden.
Fachbegriffe
»d« und »s« sind Umwandlungsspezifizierer.
»%d« und »%s« sind Umwandlungsspezifikationen.
Weitere Beispiele
Wir betrachten noch einige weitere Beispiele zur Ausgabe von Zahlen:
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", 32767 ); }stdout
32767
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", 0 ); }stdout
0
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", 12 ); }stdout
12
Die Ausgabe des folgenden Programms läßt sich nicht von der Ausgabe des vorigen Programms unterscheiden.
main.c
#include <stdio.h>
int main( void )
{ printf
( "%s\n", "12" ); }stdout
12
Numeralia
Ein Numerale (also ein Zahlwort, Plural: „Numeralia“) ist eine Schreibweise einer bestimmten Zahl (vor allem im Quelltext). Eine Zahl ist der Wert eines Numerales.
- Numerale
32767
- Zahl
32767
»0« und »00« sind zwei verschiedene Numeralia, haben aber dieselbe Zahl als Wert.
- Numerale
0
- Zahl
0
- Numerale
00
- Zahl
0
Numeralia, außer »0« selber, sollten nicht mit »0« beginnen. Die Zahl ‹ 12 › sollte also beispielsweise als »12« und nicht als »012« geschrieben werden! (Ein mit »0« beginnendes Numerale wie »012« hat in C eine besondere Bedeutung, die aber nur selten benötigt wird und deswegen hier noch nicht weiter behandelt wird.)
Aufbau
Eine Dezimalziffer ist eines der zehn Schriftzeichen »0«, »1«, »2«, »3«, »4«, »5«, »6«, »7«, »8«, und »9«.
Ein Numerale ist eine Folge von Dezimalziffern. Sie darf, außer beim Numerale »0« nicht mit der Ziffer »0« beginnen. Beispiele: »0«, »1«, »2«, »10«, »11«, »100«, »101« oder »1000«.
Das folgende Aufbaudiagramm stellt diese Regeln bildlich dar.
- Aufbaudiagramm
Jede Dezimalziffer ausser 0
.-.
|-|---.--->( 1 )---.--->|-|
| '-' ^
| .-. |
'--->( 2 )---'
| '-' ^
| .-. |
'--->( 3 )---'
| '-' ^
| .-. |
'--->( 4 )---'
| '-' ^
| .-. |
'--->( 5 )---'
| '-' ^
| .-. |
'--->( 6 )---'
| '-' ^
| .-. |
'--->( 7 )---'
| '-' ^
| .-. |
'--->( 8 )---'
| '-' ^
| .-. |
'--->( 9 )---'
'-'Dezimalziffer
.-.
|-|---.-------->( 0 )----------.--->|-|
| '-' |
| .---------------. |
| | Jede | |
'--->| Dezimalziffer |---'
| ausser 0 |
'---------------'Dezimalnumerale .-----------.
| |
v .-. |
.--------------------'-->( 0 )---'---------------------.
| '-' |
| .---------------. |
| | Jede | v
|-|---'--->| Dezimalziffer |---.-------------------------.---'--->|-|
| ausser 0 | ^ |
'---------------' | |
| .---------------. |
'-----| Dezimalziffer |---'
'---------------'
Semantik
(Die Semantik eines Numerales beschreibt, wie man dessen Wert aus den Zeichen des Numerales gewinnt.)
Den Wert eines Numerales erhält man, indem man den auch aus dem Alltag für Numeralia geläufigen Wert abliest. Beispielsweise steht das Numerale »10« für die Zahl Zehn.
Literale
Der Oberbegriff für „Zeichenfolgenliteral“ und „Numerale“ ist „Literal “.
- Wert von Literalen
Literal Wert (in symbolischer Schreibweise)
"abc" abc (Zeichenfolge)
123 123 (Zahl)
Wenn ein Teil eines Programmes für einen bestimmten Wert steht, so sagt man auch, daß er diesen Wert habe oder angebe oder notiere oder darstelle.
»"abc"« ist ein Zeichenfolgenliteral und »123« ist ein Numerale, beides sind Literale. Jedes Literal hat einen Wert.
- Literale
Literal
.----------------------.
---.--->| Zeichenfolgenliteral |---.--->
| '----------------------' |
| .----------------------. |
'--->| Numerale |---'
'----------------------'Ausdruck
.---------.
--->| Literal |--->
'---------'
Übungsfragen
? Ausgabe vorhersagen
Was gibt das folgende Programm aus?
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", 7 ); }
Dies ist keine Scherz- oder Fangfrage, sondern eine relativ leichte Übungsfrage!
? Gleichheit von Werten
Ist der Wert des Numerales »0« gleich dem Wert des Numerales »00«?
? Gleichheit von Numeralia
Ist das Numerale »0« gleich dem Numerale »00«?
? Programm lesen
Warum gibt das folgende Programm keine Darstellung des Wertes «0» aus?
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", O ); }
? Programm lesen
Warum gibt das folgende Programm keine Darstellung des Wertes «1» aus?
main.c
#include <stdio.h>
int main( void )
{ printf
( "%d\n", l ); }