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

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

Войти через центр авторизации
Похожие вопросы
igooods Санкт-Петербург
от 120 000 до 180 000 ₽
МТС Москва
от 140 000 до 250 000 ₽
РГСофт Логистика Новосибирск
от 100 000 до 120 000 ₽
29 сент. 2020, в 18:03
1200 руб./в час
29 сент. 2020, в 18:03
4800 руб./за проект
29 сент. 2020, в 16:47
5000 руб./за проект