3

Я изучал функцию перегрузки в C++, и я увидел неоднозначное состояние, в программе,`` long` и double` одинаковы при преобразовании из `` междунар компилятором

long add(long a){ 
    long b = a; 
    return b; 
} 

double add(double a){ 
    double b = a; 
    return b; 
} 

int main(){ 
    int x; 
    x = add(10); 
    printf("x : %d", x); 
    getch(); 
    return 0; 
} 

Причина неоднозначности данный в книге был, компилятор может конвертировать int либо в long, либо в double. Таким образом, компилятор генерирует ошибку. Я запускаю это, и результат был таким же, Ошибка.

Итак, как long и double являются ? в чем причина неопределенность здесь?

ответ

3

Это не то, что long и double эквивалентны сами по себе, а скорее правила преобразования int->long и int->double имеют эквивалентный приоритет, поэтому компилятор сталкивается неоднозначность в присутствии обоих вариантов.

 Смежные вопросы

  • Нет связанных вопросов^_^