
17.04.2010, 02:05
|
|
Познающий
Регистрация: 22.02.2010
Сообщений: 30
Провел на форуме: 188597
Репутация:
15
|
|
Сообщение от gold-goblin
Есть такой код
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int integer1, integer2, sum;
cout << "введите первое число \n";
cin >> integer1;
cout << "Введите второе число \n";
cin >> integer2;
sum = integer1 + integer2;
cout <<"Сумма равна" << sum <<endl;
return 0;
}
Если integer1 приравнять (ввести) аски символ то вы полняются все строки кода кроме cin >> integer2;/
Sum в таком случае приравнивается к отрицательному числу.
В данном случае cin >> будет безошибочно считывать только цифровые символы, т.к. значение переменной, куда будет записан результат имеет тип int. Если же ввести например 123a, то integer1 будет равен 123, символ 'a' не учтется. При этом также будет установлен бит ошибки (failbit) и следовательно выражение cin >> integer2; не выполнится, так как установлен один из битов состояния потока (cin). Отрицательное или некорректное значение в sum при неправильном вводе получается из-за того, что локальные переменные при создании не обнуляются.
|
|
|