Возвращая true или false в c ++

0

Когда я запускаю метод типа bool в c++ с оператором return следующим образом:

bool method() {
    return true;
}

на консоли нет выхода. Чтобы получить результат, я должен сделать:

bool method() {
    cout << "true";
    return true;
}

Правильно ли это?

  • 6
    Для функции вполне нормально не выводить консольный вывод. Зачем вам это нужно в этом случае? Объяснение того, что может вызвать хороший ответ.
  • 0
    В первом примере нет вывода, так как вы не запрашивали никакого вывода. Только когда вы явно используете конструкции, которые производят вывод, вы увидите вывод.
Показать ещё 4 комментария
Теги:
boolean

3 ответа

6
Лучший ответ

Эта программа скомпилирована и выполнена успешно и выводит 1, что является значением true.

#include <iostream>

bool method() {
    return true;
}
int main()
{
   std::cout << method() << std::endl;
}

Если вы хотите, чтобы вместо 1 была буквальная истина, вы можете написать

#include <iostream>
#include <iomanip>

bool method() {
    return true;
}

int main()
{
   std::cout << std::boolalpha << method() << std::endl;
}

Проблема может быть также в том, что ваша программа после выполнения закрывает окно, и у вас нет времени, чтобы увидеть результат. Вы должны вставить в конец программы инструкцию ввода, которая будет ждать, пока вы что-то не введете.

1

C++ не является интерпретированным языком, как python, его скомпилированным языком. Таким образом, вы не записываете вызов функции на интерпретаторе и печатаете результат. Вы компилируете свою программу и выполняете ее позже. Поэтому, если вам нужно вывести что-то на консоль в своей программе, вам нужно написать инструкцию для этого (например, std::cout << делает).

1

Обычно рекомендуется отделить логику вашей программы от ее входной/выходной части. Таким образом, вы можете изменить логику, не меняя дисплей, и наоборот.

Примером этого может быть (я сделал это немного менее тривиальным):

int operation(int a, int b) {
    return a + b; 
}

void process() {
    int a, b;
    std::cin >> a >> b; 
    std::cout << operation(a, b);
}

Это следует соблюдать даже на языках, которые непосредственно печатают вывод выполненной функции (но это часто не для "простоты" в примерах программ). Это имеет огромное значение при разработке более крупных систем.

Вы можете узнать больше об этом с помощью googling "Model-View-Controller" или просто "отделить логику от IO".


Чтобы перейти к вашему конкретному примеру, вы создали функцию, которая отличается "логикой", и это хорошо. Вы можете добавить выражение о печати внутри, но обычно лучше, чтобы отделить проблемы.

  • 0
    Очень полезная информация. Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню