У меня есть следующая функция, которая находит минимальную сумму из 4 чисел и эту максимальную:
void miniMaxSum(vector<int> arr)
{
std::sort (arr.begin(), arr.end()); //(12 32 45 71)26 80 53 33
unsigned long long minSum = arr[0] + arr[1] + arr[2] + arr[3];
unsigned long long maxSum = (unsigned long long) arr[arr.size() - 1] + (unsigned long long) arr[arr.size() - 2] + (unsigned long long) arr[arr.size() - 3];
cout << arr[arr.size() - 1] << " " << arr[arr.size() - 2] << " " << arr[arr.size() - 3] << " " << arr[arr.size() - 4] << " " << endl;
cout << minSum << " " << maxSum << endl;
}
Теперь, если я опускаю (беззнаковые длинные длинные) преобразования, я получаю переполнение.Кто-нибудь знает почему?Разве компилятор не должен автоматически преобразовывать int в unsigned long long?