Простой простой шаблон, возвращающий нечетные числа? - PullRequest
1 голос
/ 29 июня 2010

РЕДАКТИРОВАТЬ ДО ТОГО, ЧТО ВЫ ПРОЧИТАЕТЕ: Извините .. Я не добавил символ новой строки, поэтому он оказался неясным, я не могу удалить вопрос, потому что я еще не зарегистрирован, извините за потраченное время, ребята.

Я просто впервые использовал шаблон (для поиска MIN из двух чисел) вместо макроса, и мне понравилось!Но когда я попытался изменить и сделать свой собственный шаблон, он полностью провалился .. Вот мой код:

#include <stdio.h>

template <class T> T min(T a, T b) { 
    return a < b ? a : b; 
};

//My attempt now.. because add could be int, float, etc; I wanted a template.
template <class T> T add(T a, T b) {
    return a + b;
};

int main(){

    printf("%f\n", min(1.3, 2.2));  //(Does not appear in console?)
    printf("%d", add(1, 10));       //1.300000 (how is an int show as float? lol)
    printf("%f", add(5.1, 7.34));   //1112.440000
    return 0;
}

Теперь странные результаты в комментариях. Мин работает нормально, но когда я изменяю его изСравнение с "a + b" останавливает работу в течение минуты и выдает мне странные значения с плавающей запятой?!

Я использую это неправильно?Это должно быть что-то еще?что это значит?Я понимаю основы, поэтому простое объяснение будет в порядке. Спасибо!

Ответы [ 2 ]

3 голосов
/ 29 июня 2010

Попробуйте добавить разрывы строк после других строк.

Что происходит, это:

  1. печатает min(1.3, 2.2), что 1.300000
  2. печатает перевод строки
  3. печатает add(1, 10), то есть 11
  4. печатает add(5.1, 7.34), что 12.440000

Поскольку между шагами 3 и 4 нет разрыва строки, он печатает число непосредственно друг за другом, делая его таким: 1112.440000.

0 голосов
/ 29 июня 2010

Как только вы замените привычки C, посмотрите потоки:

int main()
{
    std::cout << min(1.3, 2.2) << '\n' 
              << add(1, 10) << '\n' 
              << add(5.1, 7.34) << '\n';
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...