null [re: spec#]

Simen kjaeraas simen.kjaras at gmail.com
Tue Nov 9 07:57:34 PST 2010


Daniel Gibson <metalcaedes at gmail.com> wrote:

> Nick Sabalausky schrieb:
>> "so" <so at so.do> wrote in message news:op.vlv3iukp7dtt59 at 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


More information about the Digitalmars-d mailing list