Объясните вывод следующей программы на C ++? - PullRequest
0 голосов
/ 06 апреля 2020
int x = 10,y = 18; char z = '*';
cin>> x >> y >> z;
cout<< x << " " << y << " " << z << endl

Учитывая входные данные "46", "A" и "49" в указанном порядке, выходной сигнал при запуске программы равен "460 *" (исключая цитаты. Почему это так?

Ответы [ 2 ]

9 голосов
/ 06 апреля 2020

x и y являются целочисленными типами. z является char.

С учетом входных данных 46 A 49,

  1. cin>> x успешно и устанавливает x в 46.

  2. cin>> y завершается ошибкой, поскольку A не является целым числом. y установлен на 0 и cin failbit установлен.

  3. Поскольку cin находится в состоянии сбоя, cin>> z ничего не делает и z остается неизменным.

0 голосов
/ 06 апреля 2020

Ваш ввод не удается набрать «А», когда ожидается целое число. Он не конвертирует его в свой код ascii автоматически. Вот почему ваша последняя переменная остается прежней. В этом случае вторая переменная будет установлена ​​на ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...