Einführung in die Definition von Konstanten in C im Rahmen der Lehre des Programmierens mit der Programmiersprache C. (Konstante, const, Definition von Konstaten), Lektion, Seite 721502
https://www.purl.org/stefan_ram/pub/c_konstanten_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C-Kurs

Lokale Konstanten in C 

main.c

#include <stdio.h>

int main( void )
{ printf( "%d\n", 11 );
int const elf = 11;
printf( "%d\n", elf ); }

stdout
11
11
main.c

#include <stdio.h>

int main( void )
{ printf( "%d\n", 11 );
int const zehn = 11;
printf( "%d\n", zehn ); }

stdout
11
11
main.c

#include <stdio.h>

int main( void )
{ double const d = 300;
int const i = 273.99;
printf( "%g\n", d );
printf( "%d\n", i ); }

stdout
300
273

Die Nachkommastellen werden abgeschnitten (es wird nicht etwa gerundet).

main.c

#include <stdio.h>

int main( void )
{ double const t_kelvin = 300;
double const versatz = 273.15;
double const t_celsius = t_kelvin - versatz;
printf( "%g\n", t_celsius ); }

stdout
26.85
main.c

#include <stdio.h>

int main( void )
{ { int const c = 1; printf( "%d\n", c ); }
{ int const c = 2; printf( "%d\n", c ); }}

stdout
1
2
main.txt

#include <stdio.h>

int main( void )
{ { int const c = 1; } printf( "%d\n", c ); }

Konsole
(Fehlermeldung)
main.txt

#include <stdio.h>

int main( void )
{ int const c = 1;
int const c = 2;
printf( "%d\n", c ); }

Konsole
(Fehlermeldung)
C 2011, 6.7p3
If an identifier has no linkage, there shall be no more than one declaration of the identifier (in a declarator or type specifier) with the same scope and in the same name space 
main.c

#include <stdio.h>

int main( void )
{ int const c = 9;
int const d = 9;
printf( "%d\n", c );
printf( "%d\n", d );
{ printf( "%d\n", c );
printf( "%d\n", d );
int const c = 8;
printf( "%d\n", c );
printf( "%d\n", d ); }
printf( "%d\n", c );
printf( "%d\n", d ); }

stdout
9
9
9
9
8
9
9
9
unnötige doppelte Berechnung
printf( "%g\n", floor( 2.7 ));
printf( "%g\n", floor( 2.7 ));
einmalige Berechnung (gleiches Verhalten wie zuvor, Refaktor)
{ double const fl = floor( 2.7 );
printf( "%g\n", fl );
printf( "%g\n", fl ); }
doppelte Berechnung
printf( "%d\n", rand() );
printf( "%d\n", rand() );
einmalige Berechnung (nicht gleiches Verhalten wie zuvor, kein Refaktor)
{ int const r = rand();
printf( "%d\n", r );
printf( "%d\n", r ); }

?   Kugelvolumen

In dem folgenden Programm ist nicht ganz offensichtlich, daß »4 * atan( 1 )« nur zur Berechnung der Kreiszahl ‹π› dienen soll und die zweite »3« der Radius ist.

main.c

#include <stdio.h>
#include <math.h>

int main( void )
{ printf( "%g\n", 4./3 * 4 * atan( 1 )* pow( 3, 3 )); }

Protokoll
113.097

Durch Einführung eines Namens »pi« wird in dem folgenden Programm verdeutlicht, daß »4 * atan( 1 )« zur Berechnung der Kreiszahl ‹π› dienen soll und die zweite »3« der Radius ist. Der Ausdruck »4./3 * pi * pow( r, 3 )« ähnelt auch mehr dem bekannten Term aus der Schulmathematik.

main.c

#include <stdio.h>
#include <math.h>

int main( void )
{ double const pi = 4 * atan( 1 );

double const r = 3;

double const v = 4./3 * pi * pow( r, 3 );

printf( "%g\n", v ); }

Protokoll
113.097

Übungsfrage

Der Leser kann jetzt vielleicht vorhersagen, was das folgende Programm ausgibt.

main.c

#include <stdio.h>

int main( void )
{ int const c = 3;
{ int const c = 4;
{ int const c = 5;
printf( "%d\n", c ); }
printf( "%d\n", c ); }
printf( "%d\n", c ); }

Übungsfrage

Die beiden folgenden Programme kommen zum selben Ergebnis. Welches gefällt Ihnen besser? Warum?

main.c

#include <stdio.h>

int main( void )
{ double const t_kelvin = 300;
double const versatz = 273.15;
double const t_celsius = t_kelvin - versatz;
printf( "%g\n", t_celsius ); }

stdout
26.85
main.c

#include <stdio.h>

int main( void )
{ printf( "%g\n", 300 - 273.15 ); }

stdout
26.85

Übungsfrage

main.c

#include <stdio.h>

int main( void )
{ int const a = 1;
printf( "%d\n", a + 1 );
a + 1;
printf( "%d\n", a ); }

Welchen Wert gibt die letzte Auswertungsanweisung des obigen Quelltextes aus?

Übungsaufgabe

main.c

#include <stdio.h>
#include <math.h>

int main( void )
{ printf( "%g\n", sin( 1 + log( 2.178 )));
printf( "%g\n", cos( 1 + log( 2.178 ))); }

stdout
0.978526
-0.206122

Schreiben Sie das Programm »main.c« so um, daß derzeit wiederholt vorkommende gleiche Ausdrücke nur einmal vorkommen. Definieren Sie Konstanten, mit jenen Ausdrücken initialisiert werden, und verwenden Sie diese Konstante dann an deren Stellen. Verwenden Sie aber die im Programm »main.c« vorkommenden Literale und Operatoren, ohne die Werte von Ausdrücken dabei schon im Kopf auszurechnen. Es sollte möglichst nur eine einzige Konstante zum Programm hinzugefügt werden!  Die Ausgabe des Programmes darf sich nicht ändern.

Übungsaufgabe

main.c

#include <stdio.h>
#include <math.h>

int main( void )
{ double const x = 1;
double const y = sin( x );
double const z = sqrt( y );
double const u = pow( y, 0.51 );
printf( "%g\n", z );
printf( "%g\n", u ); }

stdout
0.917317
0.915735

Schreiben Sie das Programm »main.c« so um, daß dieselben Werte ausgegeben werden und dieselben Numerale und Funktionen zur Berechnung verwendet werden, aber keine Konstanten mehr in dem Programm vorkommen. Ersetzen Sie zunächst die Konstante »x« überall durch ihre Definition, also durch den Wert »1« und entfernen Sie die Definition der Konstante »x«. Es ergibt sich so zunächst:

main.c

#include <stdio.h>
#include <math.h>

int main( void )
{ double const y = sin( 1. );
double const z = sqrt( y );
double const u = pow( y, 0.51 );
printf( "%g\n", z );
printf( "%g\n", u ); }

stdout
0.917317
0.915735

Die Konstante »x« wurde also eliminiert, ohne daß sich das Verhalten des Programms verändert hat.

Nun zeigen wir auch noch die Elimination von »y«:

main.c

#include <stdio.h>
#include <math.h>

int main( void )
{ double const z = sqrt( sin( 1. ));
double const u = pow( sin( 1. ), 0.51 );
printf( "%g\n", z );
printf( "%g\n", u ); }

stdout
0.917317
0.915735

Nach diesem Schema können dann alle anderen Definitionen eliminiert werden, bis nur noch die beiden Ausgabeausdrücke übrigbleiben.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721502 stefan_ram:721502 Konstante, const, Definition von Konstaten C Konstante erklärung; C Konstanten Erklärung C Konstante howto; C was ist eine Konstante; erklärung Konstante in C; was ist Konstante in C; was bedeutet Konstante in C erklärung; was Konstante in C bedeutet; was ist eine Konstante in C; was ist eine Konstante C; was sind Konstanten in C; Konstanten von C; C Konstanten erklärt; was heisst Konstante in verbindung mit C? , source, source code,sourcecode, Programmier sprache C, C, Programm, Programme, C-Programm C Sprache C Programmiersprache C C-Programme, Programmieren in C, Die Programmiersprache C, Die Programmier-Sprache C, C-Programmierung, Die Programmier Sprache C, ANSI-C, Standard C, ISO-C, International Standard ISO/IEC 9899:1999 (E), ANSI X3.159-1989, C90, C99, ANSI/ISO-C, ISO/IEC-C, IEC-C, ISO/IEC 9899:1999 (E), Standard C programmieren, Standart C programmieren, INCITS/ISO/IEC 9899-1999, Programming Languages - C (formerly ANSI/ISO/IEC 9899-1999) , Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721502, slrprddef721502, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/c_konstanten_de