Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Richard <rgrdev@xxxxxxxxx>
- Date: Sat, 27 Oct 2007 20:07:42 +0200
"Charlie Gordon" <news@xxxxxxxxxxx> writes:
"Richard" <rgrdev@xxxxxxxxx> a écrit dans le message de news:
566cv4-iuf.ln1@xxxxxxxxxxxxxxxxxxxxxx
"Malcolm McLean" <regniztar@xxxxxxxxxxxxxx> writes:
"santosh" <santosh.k83@xxxxxxxxx> wrote in message
Malcolm McLean wrote:I'm pretty sure that's a perception rather than a reality. Let's say
Which in fact is almost every integer.
Maybe this is true in the sort of programming you do, but there are many
programs where integers are needed for arithmetic far more than
indexing.
you are storing a list of amounts of money as integers. You write a
routine to take the average. When asked "what does this routine do"
you will answer "it adds up an amount of money, divides by the count,
and reports it."
Actually that's not what it does.
int average(int *money, size_t N)
{
size_t i;
int total = 0;
for(i=0;i<N;i++)
total += money[i];
return total/N;
}
Whilst there are two operations that operate on int (total =0, total
+=), there are four which operate on i, and one which operates on
No there are not. it depends what the compiler does. You could as easily
make it 1 one off for initilisation and one for the loop and check
int i=N;
while(i--)
total += money[i];
total and N. Whether you count C instructions or machine operations,
what the function is mainly doing is calculating a list of indices.
Its not mainly doing that at all. It is mainly accessing and adding up
numbers.
However the programmer's perception will be that he is mainly working
with amounts of money, because that is what is important to his
human-centric way of looking at the routine.
You confuse me by trying to think too much into it.
This function adds a set integers together and then returns the average.
That's what it attempts to do, but the calculation is quite likely to cause
integer overflow if the array and/or values are large enough, causing
Its not quite likely to do anything of the sort if it is operating in
the limits the designer set - otherwise we would use different types.
undefined behaviour. Otherwise, the result is the average of the values of
the array, rounded towards zero. If the size N passed is zero, undefined
behaviour is invoked.
I'm not sure I understand why you are writing this. This applies to any
and all code posted here and a code review isn't the issue here.
Anytime someone posts a line like
x+=y;
One could make this comment "that addition might provoke undefined
behaviour if the values are too large".
.
- Follow-Ups:
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Malcolm McLean
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Charlie Gordon
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- References:
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Tor Rustad
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Peter Nilsson
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: ¬a\\/b
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: ¬a\\/b
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: James Kuyper Jr.
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Malcolm McLean
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: James Kuyper Jr.
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Malcolm McLean
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: James Kuyper Jr.
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Malcolm McLean
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: santosh
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Malcolm McLean
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Ben Pfaff
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Malcolm McLean
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: santosh
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Malcolm McLean
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Richard
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- From: Charlie Gordon
- Re: Bug/Gross InEfficiency in HeathField's fgetline program
- Prev by Date: Re: Why write putc(s.i16 & 0xff, fp);
- Next by Date: Re: Why write putc(s.i16 & 0xff, fp);
- Previous by thread: Re: Bug/Gross InEfficiency in HeathField's fgetline program
- Next by thread: Re: Bug/Gross InEfficiency in HeathField's fgetline program
- Index(es):
Relevant Pages
|
Loading