On Friday, 24 November 2017 at 14:43:24 UTC, Adam D. Ruppe wrote:
On Friday, 24 November 2017 at 14:30:44 UTC, A Guy With a
Question wrote:
I would have expected 0 to be the default value. What's the
logic behind having them being NaN by default?
It gives you a runtime error (sort of) if you use an
uninitialized variable.
You ARE supposed to explicitly initialize variables to your own
values in D. The automatic init is to make errors stand out
more consistently if you don't do this as opposed to being
random.
So pointers are initialized to null - an invalid value that
stands out if you try to use it. chars get \xFF - again,
invalid that will throw if you try to utf decode it. Floats get
NaN which is as close to invalid as they get.
ints happen to get 0 not to be convenient, but because there is
no clearly-invalid int value so something had to be chosen, and
0 was just easy to implement....
If thats the case why not just throw a compiler error? D has a
way explicitly not set it right? Through void...So if the intent
is to find erroneous code right away, just throw a compiler error
no?