Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (27)

Наибольший вклад в теги

Все теги (74)

Лучшие ответы пользователя

Все ответы (227)
  • Как работает метод nextLine() в классе Scanner?

    @MiiNiPaa
    nextLine() читает до конца текущей строки (символа перевода строки или конца потока) и возвращает всё, что было в этой строке.

    nextDouble() читает double. Оно не читает и не пропускает ничего ПОСЛЕ double.

    Итак вы вводите что-то вроде "3.15\n", где \n — символ перевода строки.
    nextDouble() извлекает 3.14 и оставляет "\n" в буфере.
    nextLine() натыкается на \n и прекращает работу, прочитав 0 символов — пустую строку.

    Проверьте: введите в одной строке "1 2 Иванов", и оно заработает (Правда пробел перед Иванов прочтётся как часть фамилии)

    Модно вызвать nextLine(), чтобы поглотить этот перенос строки и ожидать новой строки.
    Ответ написан
    3 комментария
  • В чем разница между int a() и int a=int()?

    @MiiNiPaa
    А теперь выведите typeid(first).name() на экран и удивитесь.

    Первая строчка это объявление функции first без параметров и возвращающая int. Имя функции превращается в указатель, указатель конвертируется в bool (true), который конвертируется в int (1).
    Ответ написан
    3 комментария
  • Зачем return в программе?

    @MiiNiPaa
    Вот если указано return 0; - то программа закончиться.Я правильно понимаю?
    Только если это return в main().

    return это команда закончить текущую функцию (и вернуть значение вызыающей функции)

    А если ничего не указать?Она будет в памяти висеть или что?
    С 1998 года она выполнит return 0 (опять же, справедливо только для main() ) как только достигнет конца функции main().
    Т.е. если указываешь 0, то это типа false.
    Это EXIT_SUCCESS.
    А если указать 1?
    Implementation defined. Обычно работает так же как и EXIT_FAILURE.

    Фактически это код выхода. Он возвращается в ОС. Если программа была запущена из командной строки этот код выхода можно проверить чтобы узнать как была завершена программа.
    Ответ написан
    1 комментарий
  • Можно ли возвращать лямбды?

    @MiiNiPaa
    Вот так делать - это нормально?
    Вполне

    И что в таком случае возвращается, указатель на функцию или сама функция?
    Функциональный объект. Лямбда — не функция, она может быть приведена к указателю на функцию в некоторых случаях.

    Если возвращается указатель, то где хранится сама функция, в куче или стеке?
    «Функция» лямбды хранится там же, где и остальной код. На лету ничего не собирается и не компилируется. Лямбда это синтаксический сахар для объявления класса с перегруженым оператором вызова функции.

    И еще один вопрос, по этой же теме:
    Это сокращенная запись вот такой конструкции:
    Или что то другое?
    lambda имеет уникальный тип. Это не функция (но может быть приведена к ней в данном случае).
    Ответ написан
    Комментировать