Daniel Gibson <metalcae...@gmail.com> wrote:
Nick Sabalausky schrieb:
"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.
It gives deterministic results/errors.
Yup. Also, as opposed to certain other solutions, it does not require
advanced flow control, that is likely to be incomplete. Incomplete flow
control here will make people write code 'to shut the compiler up'. And
that is worse than uninitialized variables.
--
Simen