Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
#include <iostream>
void print(int) { std::cout << "int"; }
void print(long) { std::cout << "long"; }
void print(double) { std::cout << "double"; }
int main() {
print(2.5f);
}double
- Ждать
int:float→int— преобразование,float→double— продвижение, а продвижение лучше преобразования. - Ждать ошибку неоднозначности: она бывает, только когда лучшие кандидаты равны, а здесь один из них — продвижение.
- Что вызовет
print(2.5f), если объявлены толькоprint(int)иprint(long)? - Почему
print('a')здесь вызываетprint(int), а неprint(long)?