Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » #define & integer » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen #define & integer
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Robert93
Grünschnabel


Dabei seit: 25.08.2014
Beiträge: 8

#define & integer Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:

Hallo Leute,

ich bin ein totaler Frischling in Sachen programmierung und habe das Buch "C als erste Programmiersprache" angefangen zu bearbeiten.
Zu Beginn habe ich die Datentypen Int, float etc kennengelernt.
Jetzt wurde in dem Buch die Konstante #define vorgestellt.
Nur den Sinn verstehe ich dabei nicht wirklich.
Es war ein Beispielcode dabei:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
/* Datei: zins.c */
#include <stdio.h>

//#define LAUFZEIT     10
//#define GRUNDKAPITAL 1000.00
//#define ZINS         5.0

int LAUFZEIT = 10;
float GRUNDKAPITAL = 1000.00;
float ZINS = 5.0;

int main (void)
{
   int jahr;            /* Vereinbarung von jahr als int-Variable */
   double kapital = GRUNDKAPITAL;
   
   printf ("Zinstabelle fuer Grundkapital %7.2f EUR\n",                     
            GRUNDKAPITAL);
   printf ("Kapitalstand zum Jahresende:\n");
   for (jahr = 1; jahr <= LAUFZEIT; jahr = jahr + 1) 
   {
      printf ("\nJahr: -\t", jahr);
      kapital = kapital * (1 + ZINS/100.);
      printf ("Kapital: %7.2f EUR", kapital);
   }
   printf ("\n\nAus %7.2f EUR Grundkapital\n", GRUNDKAPITAL);
   printf ("wurden in %d Jahren %7.2f EUR\n", LAUFZEIT, kapital);
   return 0;
}



Ich habe spaßeshalber mal die #define's auskommentiert und mit den Datentypen int und float ersetzt.
Siehe da, das Programm funktioniert immer noch einwandfrei.

Was also bringt #define denn nun?

Meine Ideen:
Vielen Dank schonmal im vorraus.
07.10.2016 16:14 Robert93 ist offline Beiträge von Robert93 suchen Nehmen Sie Robert93 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Eine Antwort hier: http://stackoverflow.com/questions/11079...ine-vs-variable
Du kannst Werte von #define nicht mehr (evtl. versehentlich) im Programm überschreiben.

Außerdem kannst du defines auch im Präprozessor abfragen und z.B. bedingte Kompilierung vornehmen (wenn Windows, binde diese Bibliothek ein, wenn Linux jene).

__________________
Syntax Highlighting fürs Board (Link)
07.10.2016 16:34 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Robert93
Grünschnabel


Dabei seit: 25.08.2014
Beiträge: 8

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Okay Danke.
Ist #define dann nur eine Art Sicherheit um den konstanten Wert nicht zu überschreiben?
Weil theoretisch wenn man gut aufpasst könnte man das ja auch mit den int variablen vermeiden oder?
Das mit dem Präprozessor ist mit to high..
07.10.2016 16:54 Robert93 ist offline Beiträge von Robert93 suchen Nehmen Sie Robert93 in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das mit dem Aufpassen ist so eine Sache. Wenn dein Programm nur groß genug wird, bist du vielleicht doch mal unachtsam.
Man kann eine Variable auch als const int deklarieren, dann lässt sie sich auf nicht mehr überschreiben.
Es bleibt aber eine Variable mit Adresse. Defines sind Textersetzungen, die vor dem Compiler ablaufen.

Ich sehe kein Problem darin, Konstanten im C-Code (also ohne #define) zu definieren.

__________________
Syntax Highlighting fürs Board (Link)
07.10.2016 17:02 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » #define & integer