In C/C++/D if you sum a types that are smaller than int, you obtain an int. D has copied C for backwards compatibility with C code.

Bye,
bearophile

Is there any reasoning why this should remain unchainged? How could it break interface between languages? And also this code succesfully compiles and runs in C++.

#include <iostream>

using namespace std;

int main()
{
   unsigned short a = 15;
   unsigned short b = 10;

   unsigned short c = a + b;  //There is no problem

   cout << c << endl;

   return 0;
}

As D compiler doesn't need to compile C programme and have compatible operations with types. Why we still should keep this garbage?!

I don't know the right solution but I believe that previous example illustrates some contradiction in integer types system design or implementation.

Why we dont promote *ulong* and *long* to int? Let's also promote string into array of ints?! Can't believe it!

Reply via email to