"so" <s...@so.do> wrote in message news:op.vlv3iukp7dt...@so-pc... >> There's no usage of an undeclared variable, but the right-hand-side of >> the >> second line uses 'i' before *the programmer* initializes it. Yes, the D >> compiler chooses to automatically initialize it, but by doing so it >> silently >> creates a bug every time the programmer intends 'i' to start out as >> anything >> other than 0. And it's not easily noticed since 0 is a commonly-used >> value. >> (Something like 0xDEADBEEF would at least be an improvement (albeit a >> small >> one) since at least that would stand out more and likely fail more >> spectacularly.) > > So you want language force you to type either "int x=0;" or "int x=void;". > Fair enough and i agree it "might" be a bit better. But you are making it > as it is something so much important.
I tend to get a bit fired up by it because Walter's reasoning on it being *better* to automatically assume some init value baffles me. > Again, for both coder and the code-reader there is no ambiguity here, > every single thing is defined. > Whether or not it's defined isn't really the issue here (although if it weren't defined, that would definitely be a problem). It just comes down to "more error-prone" vs "less error-prone".