wil 2 getallen delen en het resultaat als volgt krijgen:
5 / 2 = 2,50
Maar er wordt slechts 2 uitgevoerd.
Ik weet nu niet wat ik verkeerd doe.
Hier mijn code:
int a;
int b;
int c;
printf("First num\n");
scanf("%d", &a);
printf("Second num\n");
scanf("%d", &b);
c = a / b;
printf("%d", c);
Antwoord 1, autoriteit 100%
Je hebt een double
variabele nodig om het resultaat op te slaan. int
slaat alleen gehele getallen op. Bovendien moet u de andere variabelen ook typen voordat u de deling uitvoert.
Doe zoiets als dit
double c;
.
.
.
c = (double)a / (double)b;
printf("%f", c);
OPMERKING:
Je hebt de &
in printf()
-instructies niet nodig.
Antwoord 2, autoriteit 21%
Om de typecast in float te vermijden, kun je direct scanf gebruiken met de %f-vlag.
float a;
float b;
float c;
printf("First number\n");
scanf("%f", &a);
printf("Second number\n");
scanf("%f", &b);
c = a / b;
printf("%f", c);
Antwoord 3, autoriteit 21%
Het ‘/’ – teken is voor deling. Telkens wanneer u in C-taal een geheel getal deelt door een geheel getal en de gegevens opslaat in een geheel getal, is het antwoord als uitvoer een geheel getal. Bijvoorbeeld
int a = 3, b = 2, c = 0;
c = a/b; // That is c = 3/2;
printf("%d", c);
De ontvangen outputis: 1
De reden is het type variabele dat u hebt gebruikt, d.w.z. geheel getal (int
)
Telkens wanneer een geheel getal wordt gebruikt voor het opslaan van de uitvoer, wordt het resultaat opgeslagen als geheel getal en niet als een decimale waarde.
Voor het opslaan van de decimale resultaten biedt C-taal float
, double
, long float
en long double
.
Telkens wanneer u een bewerking uitvoert en een uitvoer in decimalen wenst, kunt u de bovengenoemde datatypes gebruiken voor uw resulterende opslagvariabele. Bijvoorbeeld
int a = 3, b = 2;
float c = 0.0;
c = (float)a/b; // That is c = 3/2;
printf("%.1f", c);
De ontvangen output: 1,5
Dus ik denk dat dit je zal helpen het concept te begrijpen.
Onthoud: wanneer u float
gebruikt, is de toegangsspecificatie %f
. Je moet je antwoord omzetten in float
, net zoals ik deed, en dan wordt het antwoord weergegeven.
Antwoord 4, autoriteit 21%
Je moet float
of double
variabelen gebruiken, niet int
(integer). Merk ook op dat een deling tussen twee gehele getallen zal leiden tot een geheel getal, terwijl een deling tussen een float
/double
en een geheel getal tot een float resultaat zal leiden. Dat komt omdat C dit gehele getal impliciet promoot naar float
.
Bijvoorbeeld:
5/2 = 2
5/2.0f = 2.5f
Let op de .0f
, dit betekent eigenlijk dat we delen met een float.
Antwoord 5
In C wordt alleen een int-typenummer weergegeven. 5/2 geeft een typenummer met drijvende komma. Dus de compiler compileert het alleen met de integerwaarde.