Citat:
Ursprungligen postat av
bosscs2
Kod:
double doubleNumber;
double answer = doubleNumber % 1;
ERROR : answer must have ingrate or unscoped enum value?
Vad r fel?
Urskta fr detta svar, har det just nu inte aktuellt, eftersom jag inte kommer t
ngon del av C++ standarden p denna sla uppkoppling hr, s mitt minne r lite blurrigt:
Det str att answer mste vara deklarerad som en integer antar jag att kompilatorn menar.
Enum r typ en egen primitiv datatyp, och den ska definitionsmssigt vara upprkningsbar.
En integer r upprkningsbar, men det r inte en float (eller double).
ven om du har ett knt float number s vet du inte nsta float i serien,
allts kan den inte bli upprkningsbar.
I princip kan man ta reda p nsta float i serien men den beror p hur stor upplsning din float-typ har,
tex
float eller
double eller
long double.
I vissa system och sammanhang kallas upplsningen ibland fr
epsilon, ibland fr
delta.
Olika numeriska bibliotek har olika definitioner p dessa.
Det menas dock att fr floats generellt s kan de inte vara upprkningsbara eftersom nsta vrde i serien r infinitesimalt (ondligt) liten, och kan inte berknas.
Och dvs fr enums, allts upprkningsbara datatyper s ska operatorn > och < returnera en boolean, sant eller falskt, true or false.
Men det kan finnas ldre kod dr man anvnder enums p andra stt.
Tex fr frger, tex rd, grn och bl.
Men tex uttrycket rd > grn saknar allts mening. Drfr r det principiellt fel att stta en frg som en enum.
Gissningsvis finns det nd gott om gammal kod dr tex egenskapen frg r en enum.
Anvnds den p rtt stt s kan det vl fungera nd.
Att anvnda modulus-operatorn % i ngot uttryck likt
% 1 ger vl alltid svaret noll 0, eftersom
resten vid division med 1 alltid blir 0 som svar.
% 2 ger alltid 0, eller 1 som svar.
% 3 ger alltid 0, 1 eller 2 som svar.
Om jag nu minns rtt s kan ven operatorn % overloadas, jag har dock lite svrt att se vitsen
fr det, men fr tex egna numeriska datatyper s kan den ju ha en tnkbar anvndning.
En
primitiv datatyp har jag fr mig r en datatyp som inte kan overloadas,
den kan inte omdefinieras.
I och fr sig finns det skert kod dr tex
integer omdefinierats till 128 bits integers,men det r inte normalt att gra det. Det rekommenderas istllet att man skriver
int128,mest fr att nr nya programmerare tex ska skolas in p ett nytt projekt
s r det viktigt att komma ihg.