Tom2: (C) Extremnewbie braucht Hilfe beim addieren

Beitrag lesen

Hoi,

Ich hab so zur Übung ein Programm versucht, das 2 Kommazahlen
addieren soll, so weit so gut. Wenn ich jetzt aber zB 12.4 und
45.67 eingebe, schreibt er mir hin : Die Summe von 12.400000
und 45.669998 ergibt 58.070000 . Warum ist das so ?
Warum das so ist kann ich dir leider nicht sagen.

Dann sei doch still?

Fertig lesen, denken, schreiben. Diese Zeile ist wohl ziemlich überflüssig.

Das wurde in den anderen Postings hier schoen klar und deutlich
erklaert.

Ja, vielleicht wollte ich ihm jedoch sonst helfen? Ich lerne auch gerade erst C, desshalb konnte ich es nicht erklären. Die Postings à la 'das ist das und das, schau hier und dort' würden mir in diesem  Moment wenig nutzen, da ich das Problem zuerst selbst lösen will oder zumindest den Fehler lokalisieren.

Tritt der Fehler auch auf, wenn du double anstelle von float
benutzst?

Ja, allerdings nicht in einer so starken Form.

Vielleicht reicht das ja auch schon.

#include <stdio.h>

float x, y, z;
Ohohohoh, was ist denn das?

Eine Variablen-Deklaration, wahrscheinlich.

Ja, das sehe ich auch.

Gehört das nicht in die main-Funktion?

Das kommt darauf an.

Oder gibt es eine neue Methode um globale Variablen in C zu
deklarieren, von der ich nichts mitbekommen hab?

Ganz offensichtlich.
Globale Variablen werden *ueber* der Funktion 'main' deklariert.
Variablen innerhalb von 'main' haben den Gueltigkeitsbereich nur
innerhalb von 'main', nicht ausserhalb.

Jep, hab mich geirrt, sorry.

float summe(float x, float y);

int main(void)   {
Hier gehört nun die deklaration hin:
       float x, y, z;

Wenn sie nicht global sein sollen, ja. Ansonsten ist das falsch.

Wesshalb sollten die Variablen global sein? er übergibt der Funktion Summe die Variablen x und y als Parameter. Diese heissen in der Funktion dann auch wieder x und y, was ich ein wenig verwirrend finde. In diesem Fall haben doch die lokalen Variablen vorrang oder?

MfG

Tom2