Programmeren in C/Datatypes: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Kleuske (overleg | bijdragen)
Geen bewerkingssamenvatting
Kleuske (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 161:
En "''Hey, Presto!''". De code werkt zoals het de bedoeling is omdat we nu rekening houden met de inherente fout die het gebruik van floating-point getallen oplevert. Met behulp van "''fabs(x/3 - 1.0) < EPSILON''" wordt het absolute verschil uitgerekend en als dit kleiner is dan een voorgedefinieerd maximum ('''EPSILON''') zijn de twee waarden "gelijk" of in ieder geval "gelijk genoeg". In de wandeling staat deze techniek ook wel bekend als "''close-enough comparison''". Een goede waarde voor EPSILON hangt af van de toepassing en de implementatie van de compiler (dus "''[[:w:RTFM|RTFM]]''", nogmaals).
 
== ''enum'' ==
 
Een ''enum'' (kort voor ''enumerated type'') is een "opgesomd type". Dat wil zeggen dat alle mogelijke waarden voor zo'n type expliciet worden opgesomd en andere waarden domweg niet bestaan. Dit kan bijzzonder handig zijn in die gevallen waar slechts een beperkt aantal waarden nodig is.
 
<source lang="c">
enum kleur
{
Rood,
Groen,
Blauw
};
</source>
 
Deze code definieert een datatype 'kleur' als een opsomming met drie mogelijke waarden. Aan elk van deze waarden wordt een numerieke waarde toegekend, maar welke waarde dit precies is, is hier ongedefiniëerd. Als het wenselijk is dat deze drie een specifieke waarde hebben, kan dat ook:
 
<source lang="c">
enum kleur
{
Rood = 0, /* Rood heeft nu een numerieke waarde '0' */
Groen, /* Groen heeft nu een numerieke waarde '1' */
Blauw /* Blauw heeft nu een numerieke waarde '2' */
};
</source>
De waarde '''Rood''' is nu equivalent aan '''0''', groen aan '''1''' en blauw aan '''2'''. Let wel dat het daarmee nog steeds geen ''int'' is, maar een afzonderlijk datatype.
 
<source lang="c">
enum kleur
{
Rood = 0,
Groen,
Blauw
};
 
enum kleur k; /* een variabele van het type ''enum kleur" */
int i;
 
k = Rood; /* Ok */
i = Rood; /* FOUT! */
k = 0; /* FOUT! */
</source>
== ''void'' ==
 
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.