PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kleine Frage zu C Programmierung



BeS
23-10-2002, 18:54
Hallo,
ich möchte zwei Zahlen teilen und mit dem Ganzzahlanteil weiterrechnen.
Wenn ich eine Variable a als integer deklariere und dann a den Wert 9/4 zuweise, bekommt a dann immer den Ganzzahlantei zugewiesen (hier also 2)?
Oder brauche ich dazu eine spezielle Funktion?

Und wie kann man den Rest Berechnen? fmod scheint hier nicht die richtige Funktion zu sein.

Danke!

The Ripper
23-10-2002, 19:11
zur verdeutlichung folgender code-ausschnitt:


int erg0 = 9 / 5;
double erg1 = 9 / 5;
double erg2 = 9.0 / 5;
int erg3 = 9.0 / 5;

printf("int = 9 / 5 ergibt: %d\n", erg0);
printf("double = 9 / 5 ergibt: %f\n", erg1);
printf("double = 9.0 / 5 ergibt: %f\n", erg2);
printf("int = 9.0 / 5 ergibt: %d\n", erg3);

die ausgabe dieses programms sieht so aus:


int = 9 / 5 ergibt: 1
double = 9 / 5 ergibt: 1.000000
double = 9.0 / 5 ergibt: 1.800000
int = 9.0 / 5 ergibt: 1


daraus schliessen wir:
- int / int gibt immer den ganzzahligen anteil der division zurück (es wird nicht gerundet)
- die zuweisung an eine variable vom typ double ändert daran nichts
- double / int gibt das ergebnis als dezimalbruch zurück (9.0 ist eine zahl vom typ double)
- wird das ergebnis dieser division einer variablen vom typ int zugewiesen, enthält diese den ganzzahligen anteil, dabei wird nicht gerundet

an den rest einer division kommt du übrigens auch mit dem modulo-operator:
int rest = 9 % 5; /* rest = 4 */

Sean
23-10-2002, 19:12
Ja, aber warum probierst du es nicht einfach aus?

--
Sean Bergmann
0x15@azeroth.org
http://www.lang.c-qnet.org

BeS
23-10-2002, 21:12
Hi The Ripper,
Danke für die ausführliche Erklärung!
Manchmal ist es einfacher als man denkt... :rolleyes: