Как я могу сохранить значение без использования cin, getline и т. Д.

0

Я в тупике об этом. Поэтому я написал код, чтобы попытаться объяснить его. Мне было интересно, почему я могу хранить числа или символы, даже если я не запрашивал ввод с помощью cin или getline? Единственное, о чем я могу думать прямо сейчас с моими ограниченными знаниями, это "while (!(cin >> num1))", но опять же, почему цикл while выполнял условие?

#include <iostream>
#include <limits>

using namespace std;

int main()
{
    int num1;
    cout << "Please enter a number: ";
    while (!(cin >> num1))
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Invalid input. Try again: ";
    }
}
  • 4
    Цикл while всегда выполняет код в круглых скобках хотя бы один раз ... в противном случае он не будет знать, вводить или нет тело цикла.
  • 1
    Что бы ожидать , что в while цикл делать, кроме выполнения условия? Можете ли вы придумать причину , чтобы написать while цикл , который не выполнить условие по крайней мере один раз , чтобы решить , нужно ли выполнить код в цикле или нет?
Показать ещё 1 комментарий
Теги:
cin

1 ответ

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

выражение

cin >> num1

является оперативным и выразительным. Функция >> сохраняет вход в num1 и одновременно возвращает логическое значение. При успешном чтении/хранении cin >> num1 возвращает 0, а условный цикл while выглядит следующим образом:

while(!(0)){ //code   }

эквивалентно

while(1){ //code   }

эквивалентно

while(true){ //code   }

поэтому, когда cin >> sum1 успешно работает, цикл продолжается.

неудавшееся чтение/хранение из cin >> num1 возвращает, я верю 1, который вычисляет false в условии while while.

while(!(1)){ //code    }

эквивалентно

while(false){ //code    }

и контур заканчивается здесь

Ещё вопросы

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