Article View: be.comp.programming
Article #12511C decrement / increment
From: [EdGe]
Date: Fri, 09 Nov 2001 02:19
Date: Fri, 09 Nov 2001 02:19
48 lines
2237 bytes
2237 bytes
Een aantal arrays worden ingesteld met een bepaalde waarde, waarna de
index met 1 verhoogd:
vb:
a[x] = c;
b[x] = d;
c[x++] = e;
in een worst-case geval moet de waarde van c[] bijgewerkt als
resultaat van een test
if(...) c[--x] = getal;
Je zou de conditie kunnen bevatten met if- else, maar volgende vind ik
altijd vies om later nog te zien (de source is iets complexer in tests
e.d. dan hier voorgesteld):
if (...) c[x++] = e;
else c[x++] = getal;
Huidige vorm is:
c[x] = e;
if (...) c[x] = getal;
x++;
Wat niet bij snelle code reviews de indruk wekt dat x 2* opgehoogd
wordt.
In principe zou het ook correct zijn als pre-decrement en
post-increment samen gebruikt kunnen worden, maar mijn compiler
vertikt dat. Omdat de uitzondering zelden voorkomt, zou dat in zeer
snelle code geresulteerd kunnen hebben:
if(...) c[--x++] =getal;
Dit kan natuurlijk ook:
if (...)
{
x--;
c[x++] = getal;
}
Maar het geeft veel accolades voor weinig code. Persoonlijk vind ik
de --x++ vorm veel logischer.
In principe lijkt de --x++ correct vertaalbaar: vooraf je index terug
verlagen, waarde aanpassen en index terug verhogen. Ik verlies tijd
bij TRUE, maar wn er bij FALSE, in 99% van de mogelijkheden.
Weet er iemand of zoiets legale C hoort te zijn, of is er geen
workaround? (zodat ik huidige vorm moet behouden).
Technical Details
Message-ID:
<3beb3ad1.46039351@news.pandora.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!opentransit.net!newsfeeds.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,d5a3535abd40b2f0,start X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2001-11-08 18:19:05 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!opentransit.net!newsfeeds.belnet.be!news.belnet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail From: olx09654@online.be ([EdGe]) Newsgroups: be.comp.programming Subject: C decrement / increment Message-ID: <3beb3ad1.46039351@news.pandora.be> X-Newsreader: Forte Free Agent 1.21/32.243 Lines: 49 Date: Fri, 09 Nov 2001 02:19:03 GMT NNTP-Posting-Host: 213.224.217.19 X-Complaints-To: abuse@pandora.be X-Trace: afrodite.telenet-ops.be 1005272343 213.224.217.19 (Fri, 09 Nov 2001 03:19:03 MET) NNTP-Posting-Date: Fri, 09 Nov 2001 03:19:03 MET Organization: Telenet Internet