This seems like what could be a common cause of bugs
Andrej Mitrovic
andrej.mitrovich at gmail.com
Fri Jul 8 15:45:58 PDT 2011
This is just an observation, not a question or anything.
void main()
{
enum width = 100;
double step = 1 / width;
writeln(step); // 0
}
I've just had this bug in my code. I forgot to make either width or 1
a floating-point type. IOW, I didn't do this:
void main()
{
enum width = 100.0;
double step = 1 / width; // or .1
writeln(step); // now 0.01
}
This seems like a very easy mistake to make. But I know the compiler
is probably powerless to do anything about it. It has an expression
resulting in an int at the RHS, and it can easily cast this to a
double since there's no obvious loss of precision when casting
int->double.
Where's those lint tools for D.. :/
More information about the Digitalmars-d-learn
mailing list