Есть код
#include <iostream>
using namespace std;
int num = 0;
int foo()
{
return ++num;
}
int main()
{
cout << foo() << ' ' << foo() << endl;
return 0;
}
Вот что мне не понятно:
cout << foo() << ' ' << foo() << endl; //Выводится "2 1"
и
cout << foo() << ' ';
cout << foo() << endl; //Выводится "1 2"
В последней ситуации все ясно, но вот первую я не пойму (непонятен именно вывод).
Во-первых, начиная с "классического" С++98 и до С++17 порядок вычисления подвыражений в этом примере не специфицирован. Поэтому никакого "как по действиям это происходит" тут нет и быть не может. По мере продвижения через С++11 и С++14 требования порядка ужесточались, но все равно их еще было недостаточно для того, чтобы вывод этого примера стал специфицированным.
Во-вторых, начиная с С++17 должно выводиться именно "1 2", но для этого нужно соответствие компилятора требованиям С++17.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно сравнить два числа, количество цифр которых будет равняться вплоть до 10^6 (Тип данных записан как string)Какие помимо этого способа существуют...
Пытаюсь вызвать С++ dll с pythonВыдает такую ошибку:
Собственно хочу понять механизм того что происходит с компилятором в C и C++ если объявить символ вот так 'a' и вот так "a"Весь смысл изложен в этой...