mrjbom
@mrjbom

Перегрузка функций с unsigned параметром и обычным?

Имеется следующий код:
#include <iostream>
using namespace std;

void func(unsigned int a)
{
    cout << "unsigned\n";
}

void func(int a)
{
    cout << "signed\n";
}

int main()
{
    func(5);
    return 0;
}


Почему вывод signed? Оттого что 5 это int по умолчанию?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
@MarkusD Куратор тега C++
все время мелю чепуху :)
Стандартом определены правила вывода типа для числового литерала из самого литерала. Также в стандарте определен формат представления числового литерала.
Согласно этим правилам и этому формату, 5 будет являться числовым литералом с типом int.
Если бы ты написал 5u, то тип бы уже был unsigned int. А если бы ты написал 5lu, то тип бы уже был unsigned long int.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@vanyamba-electronics
В Си int - это тип по-умолчанию.
Ответ написан
Комментировать
tsarevfs
@tsarevfs Куратор тега C++
C++ developer
Все верно, по умолчанию целочисленные константы имеют тип int.
unetway.com/tutorial/c-konstanty-i-literaly
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы