Har ikke så meget forstand på C men er det ikke fordi du siger return 0;
Prøvede lige samme kode i Delphi. Der virkede det. Der er ikke noget der hedder float i delphi. Der hedder det double. Kunne det være det samme problem i c?
[Redigeret d. 24/03-05 17:49:35 af Jonas (Decko)]
For det første tager Jonas fejl begge steder. Float er 32-bit og double er 64-bit. I Delphi hedder det Real. Return 0 betyder at funktionen returnerer 0, hvilket betyder en normal program-lukning i denne situation.
Sådan her bør koden se ud:
#include <stdio.h>
int main()
{
int A, B, Z;
float X;
A = 150;
B = 180;
Z = B - A;
X = (float)Z / (float)B * 100.f;
printf("Tallet er %f", X);
return 0;
}
Problemet opstår ved at Z/B opfattes som værende heltal, hvorfor resultatet giver 0. Bemærk at jeg har sat ".f" bagefter 100, hvilket automatisk gør det til en floating point værdi. Man kan også skrive ".0f". ".0" vil i nogle tilfælde gøre det til en double og i andre en float, og da double værdier behandles langsommere, så vil ".f" eller ".0f" være bedst.
Ved "(float)Z / (float)B" fortæller jeg compileren at den dividering skal opfattes som en floating point værdi.
1101110100010110000101000001
[Redigeret d. 24/03-05 17:58:25 af Nicolai Lyster Fersner]