C ++ запятая странное поведение с числами - PullRequest
1 голос
/ 15 октября 2019

У меня есть самый простой код, который должен принять и перепечатать два числа. Он хорошо работает для любого разделяющего символа, который я пробовал (пробел, + и т. Д.), Кроме (!) Запятой.

cout << "Enter x & y coordinates: ";
cin >> x;
cin >> y;
cout << "Coordinates are (" << x << "," << y << ")" << endl;
  • 2 2 выхода (2,2)
  • 2 + 2 выхода (2,2)

  • 2,2 ожидает второго числа

, но 2,2 не запрашивает второе число и только выводит (2,0). Почему это происходит? Куда делись вещи после запятой?

1 Ответ

3 голосов
/ 15 октября 2019

Хорошо работает для любого пробующего символа (пробел, + и т. Д.), Кроме (!) Запятой.

На самом деле нет.

  • пробелы (включая tab, eol) действительно игнорируются.
  • 2+2 - это 2 числа: 2 и +2 (так как число может начинаться с + или -)

В других случаях std::cin >> y завершится ошибкой, и установите cin в состоянии ошибки, а для y установите значение 0.

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