While Anweisung in C

Hallo,

ich habe eine while Schleife vorgesetzt bekommen, verstehe diese aber nicht ganz.

while(1) 
 {
 x = 10.0 \*x; 
 if ( (x+1) == x) 
 {
 printf("X=X");
 exit (0); 
 }
 }

usw.

so, ich verstehe, dass es sich um eine Endlosschleife handelt… jedoch verstehe ich nicht wieso da („X = X“) ausgegeben wird (ausprobiert…)
weil (x+1) ja nie x sein kann, muss doch immer 1 größer X sein? Bei mir hat sich eine Barrikade aufgebaut.

Danke im Vorraus für eure Hilfe …

LG

S.I.E

Hallo,

while(1)
{
x = 10.0 *x;
if ( (x+1) == x)
{
printf(„X=X“);
exit (0);
}
}

usw.

so, ich verstehe, dass es sich um eine Endlosschleife
handelt… jedoch verstehe ich nicht wieso da („X = X“)
ausgegeben wird (ausprobiert…)
weil (x+1) ja nie x sein kann, muss doch immer 1 größer X
sein? Bei mir hat sich eine Barrikade aufgebaut.

Du hast leider einen interessanten Teil des Programms weg gelassen: die Deklaration von x. Ich vermute die sieht so aus:

flot x = 1.0;

oder so. Ein float kann ab einer bestimmten Größe ganze Zahlen nicht mehr exakt speichern, und sobald die Genauigkeit unter 1 sinkt, ändert die Addtion von 1 nichts mehr.

Für eine genauere Erklärung lies dir mal das hier durch:
http://docs.sun.com/source/806-3568/ncg_goldberg.html

Grüße,
Moritz

für diesen Zweck wäre
int x=1;
sinnvoller

für diesen Zweck wäre
int x=1;
sinnvoller

nein nicht wirklich
das wäre dann ne endlosschleife, die sich nie beendenwürde und nix macht.

Danke an Alle :=)

das mit float und ungenau hat mir richtig viel geholfen :=)