ik heb een c-taal probleem.. hieronder staand programma klopt, en werkt, maar de vraag luidt :
op machines met een woordlengte van 2 bytes loopt het programma incorrect. waarom ?
wat moet er met het programma gebeuren om het probleem bloot te leggen, ook in het geval u met een woordlengte werkt van 4 bytes. probeer het uit. <ar moet er gedaan worden opdat het programma op de meeste machines hetzelfde resultaat levert, onafhankelijk van hun woordlengte .
ik sta hier voor een raadsel, weet namelijk niet hoe het op te lossen ..
kan jij mij helpen ?
alvast bedankt ! alex.
/****************************************
*Naam: Heyman
*Voornaam: Alexander
*datum:
*beschrijving:
****************************************/
#include <stdio>
#define OPPERVL 179680425
#define VIERK_MIJL_PER_VIERK_KM 0.3861021585424458
#define VIERK_VOET_PER_VIERK_MIJL (5280*5280)
#define VIERK_INCH_PER_VIERK_VOET 144
#define ACRES_PER_VIERK_MIJL 640
int main(int argc, char* argv[]){
const int pacific_sea = OPPERVL; /* in vierkante kilometers */
double acres,vierk_mijl,vierk_voet,vierk_inch;
printf("\n De pacific sea heeft een oppervlakte van\n");
printf("%d vierkante kilometer.\n", pacific_sea);
vierk_mijl = VIERK_MIJL_PER_VIERK_KM * pacific_sea;
vierk_voet = VIERK_VOET_PER_VIERK_MIJL * vierk_mijl;
vierk_inch = VIERK_INCH_PER_VIERK_VOET * vierk_voet;
acres = ACRES_PER_VIERK_MIJL * vierk_mijl;
printf("in andere eenheden wordt dit:\n\n");
printf("%22.7e acres\n", acres);
printf("%22.7e vierkane mijl\n", vierk_mijl);
printf("%22.7e vierkante voet\n",vierk_voet);
printf("%22.7e vierkante inch\n", vierk_inch);
}
c-taal prob
c-taal prob
Laatst gewijzigd door alexander op ma 22 okt 2007, 20:29, 2 keer totaal gewijzigd.
normaal zou dit programma moeten werken op een machine met 4 byte.. en niet werken op een machine met 2 byte.
waarom werkt het niet op een machine met 2 byte ?
wat moet er met het programma gebeuren om het probleem bloot te leggen, ook in het geval u met een woordlengte werkt van 4 bytes. wat moet er gedaan worden opdat het programma op de meeste machines hetzelfde resultaat levert, onafhankelijk van hun woordlengte .
ik werk met djgpp is een compiler voor in de Dos omgeving.
groet alex.
waarom werkt het niet op een machine met 2 byte ?
wat moet er met het programma gebeuren om het probleem bloot te leggen, ook in het geval u met een woordlengte werkt van 4 bytes. wat moet er gedaan worden opdat het programma op de meeste machines hetzelfde resultaat levert, onafhankelijk van hun woordlengte .
ik werk met djgpp is een compiler voor in de Dos omgeving.
groet alex.
> waarom werkt het niet op een machine met 2 byte ?
Zal wel iets zijn met de grootte van de datatypes.
> wat moet er met het programma gebeuren om het probleem bloot te leggen, ook in het geval u met een woordlengte werkt van 4 bytes. wat moet er gedaan worden opdat het programma op de meeste machines hetzelfde resultaat levert, onafhankelijk van hun woordlengte .
Je moet voor elke machine een aparte code schrijven in je programma.
En de datatypes aanpassen zodat je gegevens in de variabelen passen.
Zal wel iets zijn met de grootte van de datatypes.
> wat moet er met het programma gebeuren om het probleem bloot te leggen, ook in het geval u met een woordlengte werkt van 4 bytes. wat moet er gedaan worden opdat het programma op de meeste machines hetzelfde resultaat levert, onafhankelijk van hun woordlengte .
Je moet voor elke machine een aparte code schrijven in je programma.
En de datatypes aanpassen zodat je gegevens in de variabelen passen.
Dat kan ik moeilijk zeggen, ik weet niet wat er allemaal in jouw boek staat.
Maar djgpp is een 32-bit compiler. Dit wil zeggen dat je integer (int) in je code 32-bit is (dus 4 bytes).
Als je nu een computer/compiler hebt die die 16 bit is, dan is je integer ook 16 bits groot.
Dus dan zal je resultaat niet in die integer passen van 16 bit.
Daarom zal het programma waarschijnlijk niet werken.
zie ook hier voor meer informatie over datatypes in C :
http://nl.wikibooks.org/wiki/Programmer ... /Datatypes
Maar djgpp is een 32-bit compiler. Dit wil zeggen dat je integer (int) in je code 32-bit is (dus 4 bytes).
Als je nu een computer/compiler hebt die die 16 bit is, dan is je integer ook 16 bits groot.
Dus dan zal je resultaat niet in die integer passen van 16 bit.
Daarom zal het programma waarschijnlijk niet werken.
zie ook hier voor meer informatie over datatypes in C :
http://nl.wikibooks.org/wiki/Programmer ... /Datatypes