Case Range Statement ..
Don
nospam at nospam.com
Mon Jul 13 02:59:02 PDT 2009
Michiel Helvensteijn wrote:
> Andrei Alexandrescu wrote:
>
>> void main()
>> {
>> foreach_reverse (i; 0.7 .. 100.7)
>> {
>> write(i, " ");
>> }
>> }
>>
>> The last number printed is -0.3.
>
> A question if I may.
>
> Why does D allow iteration over an interval of floats? A floating point
> number has no direct successor or predecessor. Any such interval would
> contain zero, one or infinite elements.
>
> Given the -0.3, I'm assuming you increase/decrease by 1.0 each iteration. Is
> this useful enough to be the standard behavior?
>
It's a petri dish. Perfect breeding ground for bugs.
real BIG = 2.0 /(real.epsilon);
foreach(i; BIG .. BIG + 2) {
...
}
Infinite loop, since BIG + 1 == BIG.
More information about the Digitalmars-d
mailing list