I'm getting NAN out of nowhere

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jul 13 07:29:57 PDT 2015


On 7/11/15 12:57 PM, flamencofantasy wrote:
> On Thursday, 9 July 2015 at 15:14:43 UTC, Binarydepth wrote:
>> This is my code :
>> import std.stdio : writeln, readf;
>> void main()    {
>>     int[3] nums;
>>     float prom;
>>     foreach(nem; 0..2)    {
>>         writeln("input a number : ");
>>         readf(" %d", &nums[nem]);
>>         prom+=nums[nem];
>>     }
>>     writeln(prom/3.0);
>> }
>>
>> I get prompted two times for a number and I then get NAN out of nowhere.
>
> foreach(nem; 0..3)

that is a good catch, if the purpose is to fill in all 3 nums elements.

Note, a future-proof version would say:

foreach(nem; 0..nums.length)

A more d-idiomatic way is to say:

foreach(ref nem; nums)

And then use nem anywhere you see nums[nem]

-Steve


More information about the Digitalmars-d-learn mailing list