У меня вопрос. Предположим, что код такой:Что произойдет, если я введу слово, когда потребуется ввести int?
int a;
cin>>a;
Что произойдет, если я введу слово вместо целого числа? Какая ценность будет дана a
?
Заранее спасибо.
У меня вопрос. Предположим, что код такой:Что произойдет, если я введу слово, когда потребуется ввести int?
int a;
cin>>a;
Что произойдет, если я введу слово вместо целого числа? Какая ценность будет дана a
?
Заранее спасибо.
Перед использованием прочитанного значения вам нужно проверить результат операции чтения. Оператор >>
возвращает ссылку на поток, который считывается, и поток содержит информацию о состоянии, чтобы указать, была ли последняя операция успешной или неудачной. Если не удалось, значение переменной, которая будет считаться, является неопределенной, поэтому не используйте ее.
Попробуйте это:
int a;
if (cin >> a) // <-- same as: if (!cin.operator>>(a).fail())
{
// read successful, use the int as needed...
}
else
{
// read failed, do not use the int...
}
правильный, вы просто забыли дать ответ на вопрос – 4pie0
@ 0d0a: Я ответил на вопрос «что произойдет "вопрос -' >> 'провалится. Я не ответил на вопрос «какое значение будет дан». Я добавил это сейчас. –
Когда вход пользователя не может быть преобразован в тип переменной, CIN >> оставляет значение переменной нетронутым. Вы видите, что переменная выглядит как неинициализированная, которая равна нулю. Поэтому, когда вы вводите слово вместо целого числа, значение переменной остается нетронутым и остается неинициализированным.
Локальные переменные, которые являются типами POD, не инициализируются. Тот факт, что он равен нулю, является случайным поведением. Это будут те данные, которые уже занимают память стека, которую использует переменная. –
Это не проблема.
В C++ WORD
обычно является подмножеством int
.
Так полный WORD
valuerange легко представить как int
Просто посмотрите здесь:
WORD datatype in windows environments (это просто значение два байта здесь, int
по сравнению 4 байта шириной в большинстве случаев)
И конечно: Word size in linux
конечно, этот ответ немного вмятина
.... Вы попробовали и посмотрели? –
, если вы беспокоитесь об этом, просто введите все как строку, а затем преобразуйте ее в нужный тип. – Tracer
@KyleStrand Привет, я пробовал, и результат равен 0. И я хочу узнать более подробный механизм за результатом;) –