Hoe deel je 2 int in c?

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 doublevariabele nodig om het resultaat op te slaan. intslaat 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 floaten 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 floatgebruikt, 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 floatof doublevariabelen 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/doubleen 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.

Other episodes