Variablezuweisung in C/C++

Krümel

Mitglied
Hallo!

Mir ist bei der C/C++ Programmierung schon des öfteren ein seltsamer Fehler aufgetreten. Nachdem ich eine Quellcodedatei mehrmals modifiziert habe und neu kompiliert und ausgeführt habe werden einfach bestimmte Zuweisungen ignoriert.

Bsp.:

void main(void)
{
double a, b, c;

a = 2.25;
b = 1.5;

c = a / b;

printf("a=%f b=%f c=%f", a, b, c);
//habs auch mit %lf statt %f probiert
}

Ausgabe:

a = 2.25;
b = 1.5;
c = 0.0000000;

Wen ichs jetzt z.B. folgendermaßen abändere:

void main(void)
{
double a, b, c;

a = 2.25;
b = 1.5;

c = a + b;

printf("a=%f b=%f c=%f", a, b, c);
//habs auch mit %lf statt %f probiert
}

kommt die Ausgabe:

a = 2.25;
b = 1.5;
c = 2.25;

und mit folgender Änderung:

void main(void)
{
double a, b, c;

a = 2.25;
b = 1.5;

c = a + b;

printf("a=%f b=%f c=%f", a, b, c+1);
//habs auch mit %lf statt %f probiert
}

kommt die Ausgabe:

a = 2.25;
b = 1.5;
c = 3.75;

Erst wenn ich alle Variablennamen komplett ändere, z.B. durch x, y, z statt a, b, c und ein neues Projekt erstelle und neu kompiliere und linke kommt ein vernünfitges Ergebnis.Auf diese Weise habe ich das Problem bisher immer behoben. Jetzt ist das Problem aber innerhalb eines größeren Projektes aufgetreten, das ich nicht einfach so komplett neu erstellen kann und die Variablennamen möchte ich auch (wegen sinnvoller Bezeichner etc...) nicht ändern.

Ich bin völlig ratlos, woran das liegen könnte.
:(
 
Es könnte ja auch sein, dass z. B. die Software einen Bug hat,
und es dafür schon ein Update gibt oder so.

Was für eine Compiler hast du denn?
Vielleicht geht ja der Code:


...

double a = 2.25;
double b = 1.5;
double c = a / b;

...


Normalerweise müsste es schon gehn
 
also das präfix für double ist soweit ich weiss d und nicht f... f steht für float...

Code:
printf("a=%d b=%d c=%d", a, b, c);
 
NEIN

muss ich energisch gegen vorgehen!
%d steht für dezimal-zahlen (ganze zahlen)

um double auszugeben würde ich %g empfehlen! der zeigt nur relevante komma-stellen an!

ps: um floats zahlenwerte zuzuordnen bitte immer so schreiben
Code:
float zahl=1.3f;

Das f hinter dem Zahlenwert signalisiert, dass es sich dabei nicht um einen double-wert handelt!
 
Zurück