#include <iostream>
int main() {
std::cout << (char)std::cin.get() << " " << (char)std::cin.get();
system("pause");
return 0;
}
При вводе "12" получаю "2 1". В то время как при
#include <iostream>
int main() {
std::cout << (char)std::cin.get() << " ";
std::cout << (char)std::cin.get();
system("pause");
return 0;
}
получаю "1 2".
Обновите компилятор или включите в его настройках новый стандарт (С++17 или новее).
До С++17 операнды << и >> могли вычисляться в произвольном порядке, и ваш компилятор решил вычислять их справа налево.
В С++17 это поправили, и теперь операнды << и >> вычисляются строго слева направо.
Подробнее: What are the evaluation order guarantees introduced by C++17?
Говоря простым языком, порядок в котором будут вычисляться операнды оператора << не определён. т.е. неизвестно, какой вызов std::cin.get() будет вычислен первым.
В С++17 у компилятора отобрали такую свободу действий, так что при компиляции достаточно новым компилятором с соответствующими флагами будет гарантирован вывод 1 2.
Общий список правил накладываемых на порядок вычисления в выражениях можно можно почитать например здесь. Он довольно нудный и витиеватый, так что я бы советовал руководствоваться принципом «если есть сомнения в порядке, в котором будут вычисляться подвыражения, помести их в разные операторы»
Продвижение своими сайтами как стратегия роста и независимости