Почему выходные данные этой реализации кода определены? - PullRequest
0 голосов
/ 07 июня 2018

Рассмотрим следующие две функциональные перегрузки:

int foo(int a)
{
  return 20;
}

const char foo(double b)
{
  return -3;
}

int x = foo(6.0);
cout << x;

Почему результат этого примера зависит от конкретного компилятора или платформы?

Компиляция выполняется в соответствии с ИСО / МЭК 14882: 1998.

1 Ответ

0 голосов
/ 07 июня 2018

Функция перегрузки - красная сельдь;Перегрузка char foo(double) будет определена на всех платформах.

Ключевое различие заключается в самом типе char: стандарт допускает, чтобы он был подписанным или неподписанным.Какой из них выбран, определяется реализацией.

В системах с беззнаковым char функция, таким образом, возвращает положительное число CHAR_MAX - 2 (как результат char(-3)).

...