Ich bin auf diesen Code gestoßen:
#include<stdio.h>
void main()
{
int x;
float t;
scanf("%f",&t);
printf("%d\n",t);
x=90;
printf("%f\n",x);
{
x=1;
printf("%f\n",x);
{
x=30;
printf("%f\n",x);
}
printf("%f\n",x);
}
printf("%f\n",x);
}
Bei einem Blick darauf dachte ich, es handele sich um eine undefinierte Leistung, wie sie in Normen angegeben ist:
Eine Warnung: printf verwendet sein erstes Argument folgen und welchen Typ sie haben. Es wird verwirrt, und Sie erhalten falsche Antworten, wenn nicht genügend Argumente vorhanden sind oder wenn sie vom falschen Typs sind.
Aber die Ausgabe ließ mich diese Frage nicht unbesehen lassen.
(die eingegebene Zahl ist 23).
23
0
23.000000
23.000000
23.000000
23.000000
23.000000
Warum immer 23.00000? Was versucht der Compiler hier eigentlich zu tun? Anstatt mit dem Wert herumzuspielen, der unter x
warum wird dann der Wert von t
? Hat es irgendeine Erklärung, denn es scheint etwas definiert über diese undefinierte Ausgabe (Wortspiel beabsichtigt).
Edita:
Ich verwende den gcc-Compiler auf einem 32-Bit-Rechner.