#define & integer

Neue Frage »

Auf diesen Beitrag antworten »
Robert93 #define & integer

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.
 
Auf diesen Beitrag antworten »
eulerscheZahl

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).
Auf diesen Beitrag antworten »
Robert93

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..
Auf diesen Beitrag antworten »
eulerscheZahl

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.
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »