Что означают запятые в функцях cin и cout?

168
15 ноября 2021, 12:50

Сегодня я случайно написал в cin следующее:

int h, w, r, c;
cin >> h, w, r, c;

Происходил Runtime Error. Я долго не мог разобраться в чем дело. Когда разобрался, для интереса решил сделать тоже самое в cout.

cout << h, w, r, c;

При любых значениях он всегда выводит h.

Вопрос: действительно ли он выводит первую переменную, и если да, почему не возникает ошибки компиляции? И почему тогда возникает Runtime в cin?

Answer 1
cout << h, w, r, c;

это выражение (см. оператор запятая), которое поочередно выполняет выражения

cout << h
w
r
c

и возвращает значение последнего - с...

Ошибка времени выполнения в случае с cin может происходить по разным причинам - для этого нужно посмотреть код. Например, вы считаете, что введены 4 целых числа, а на самом три остаются в буфере и мешают последующему вводу... Или слет на использовании неинициализированных переменных... Или... - словом, без реального кода говорить о чем-то - просто гадание...

READ ALSO
Как динамичски заполнить QListView

Как динамичски заполнить QListView

В приложении есть QListView с именем listView1, который нужно заполнить из основного кода окна - maincpp

96
Как работает часть программы?

Как работает часть программы?

Не могу понять как он работает, что делают cinpeek(), !(cin >> a), cin

208
C++ Динамический Массив

C++ Динамический Массив

Не очень понимаю как реализовать динмассив на CPP

157
error C2664 cannot convert argument 1 from &#39;const wchar_t [9]&#39; to &#39;TCHAR *&#39;

error C2664 cannot convert argument 1 from 'const wchar_t [9]' to 'TCHAR *'

Прекрасно компилируется в codeblocks а в Visual studio выдает

344