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?

  • Floating point types default... A Guy With a Question via Digitalmars-d-learn
    • Re: Floating point type... Adam D. Ruppe via Digitalmars-d-learn
      • Re: Floating point ... A Guy With a Question via Digitalmars-d-learn
        • Re: Floating po... Jonathan M Davis via Digitalmars-d-learn
        • Re: Floating po... Dave Jones via Digitalmars-d-learn
          • Re: Floatin... A Guy With a Question via Digitalmars-d-learn
            • Re: Fl... A Guy With a Question via Digitalmars-d-learn
            • Re: Fl... Adam D. Ruppe via Digitalmars-d-learn
              • Re... A Guy With a Question via Digitalmars-d-learn
              • Re... Steven Schveighoffer via Digitalmars-d-learn
                • ... Adam D. Ruppe via Digitalmars-d-learn
              • Re... Michael V. Franklin via Digitalmars-d-learn
                • ... Michael V. Franklin via Digitalmars-d-learn

Reply via email to