Integer promotion issue

Guillaume Piolat first.last at
Sun Jan 26 13:01:58 UTC 2020

On Sunday, 26 January 2020 at 00:22:14 UTC, Adam D. Ruppe wrote:
> D inherited a silly rule from C (all arithmetic yields int or 
> above)

It seems silly however in the wild this C int promotion rule make 
stuff work without the author knowledge.



void computeMean(short* )
     // let's compute the mean of two arrays
     foreach(n; 0..N)
         short a = input[n];
         short b = input2[n];
         int meanOfTwo = (a + b) >> 1; // BOOM


Pretty sure a LOT of code would break if C++ or D would abandon 
this rule (well, except you introduce traps for integer overflow).

Doing it without the rule introduce a lot of casts...

More information about the Digitalmars-d mailing list