Archief - [PROG][C] Hoe optellen?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Tyfius

Legacy Member
Wat bedoel je juist met ASCII waarden optellen?

Je kan eenvoudigweg 'a' + 1 doen en dan kom je bij 'b' uit.

cG`

Legacy Member
Met karakters in C kan je eigenlijk werken zoals met getallen, om verder te gaan op het voorbeeld van Tyfius:

char letter = 'a';
letter komt nu overeen met het getal 97, wat de ASCII index is voor 'a'
als je nu zou doen:
letter = letter + 1; (of kortweg letter++)
dan zal letter == 'b' wat dus overeen komt met ASCII index 98
Zo kan je dus ook 2 variabelen van het type char met elkaar optellen enz..

_DKsissor_

Legacy Member
khad eigelijk ook een vraagje over C
Als ge een cprogramma met bv een matrix in wilt omzetten naar een
ééndimensonale tabel(een rij) kunt ge dat doen door een variabele voor uw forlus te declaren en dan simpelweg uw a [j] te vervangen door een a [k+]
Maar als ge dan in lussen zit te werken die enkel alles onder de hoofddiagonaal lezen ofzo hoe kunt ge dan eenvoudig uw programma omzetten naar iets ééndimensionaal , zodat ge van die verschirkkelijke vermenigvuldigingen verlost zijt. Alé zijn er een paar procedureregels ofzo die ge moet volgen om zoiets te optimaliseren( int school kregen we nogal weinig uitleg)

killgore

Legacy Member
rammsein zei:
khad eigelijk ook een vraagje over C
Als ge een cprogramma met bv een matrix in wilt omzetten naar een
ééndimensonale tabel(een rij) kunt ge dat doen door een variabele voor uw forlus te declaren en dan simpelweg uw a [j] te vervangen door een a [k+]
Maar als ge dan in lussen zit te werken die enkel alles onder de hoofddiagonaal lezen ofzo hoe kunt ge dan eenvoudig uw programma omzetten naar iets ééndimensionaal , zodat ge van die verschirkkelijke vermenigvuldigingen verlost zijt. Alé zijn er een paar procedureregels ofzo die ge moet volgen om zoiets te optimaliseren( int school kregen we nogal weinig uitleg)

Als ge met matrix een 2d-array bedoelt: deze zitten in C by default sowieso lineair achter elkaar iirc. Dus een array [2][2] zijn 4 verschillende velden na elkaar in het geheugen. Array[2] zou dus hetzelfde zijn als array[0][1]
Tenzij je deze zelf dynamisch hebt gemaakt. Je kan immers array[0] en array[1] laten wijzen naar totaal andere locaties, maar dat is niet hoe het normaal gaat in C (wel in java trouwens).
Nocturn zei:
Je moet eens proberen of de compiler die multiply niet automatisch weg doet in release mode. In sommige gevallen doet hij aan loop unrolling en optimized hij zelfs de volledige loop weg.

pfiew, voor gewone loop-unrolling gaat ge toch al zeeeer sterk mogen hopen. Dan zou ik eerder proberen via meta-programming dit te forceren :);

killgore

Legacy Member
Mja, wist niet dat em dat deed. Vroeger (niet zo lang geleden) deden compilers niet echt aan unrolling van hardcoded lussen en moest je dit forceren via meta-programming, vandaar men opmerking :).

Goed om weten wel.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan