Я столкнулся с этим довольно расплывчатым поведением, когда возился с кодом, вот пример:
#include <iostream>
using namespace std;
int print(void);
int main(void)
{
cout << "The Lucky " << print() << endl; //This line
return 0;
}
int print(void)
{
cout << "No : ";
return 3;
}
В моем коде оператор с комментарием //This line
должен был вывести The Lucky No : 3
, но вместо этого было напечатано No : The Lucky 3
. Что вызывает такое поведение? Связано ли это со стандартом С++ или его поведение варьируется от одного компилятора к другому?
print
— хороший пример функции с побочными эффектами. Помимо вычисления возвращаемого значения, он также изменяет глобальное состояние программы. О таких функциях обычно труднее рассуждать. Как правило, стремитесь к функциям, которые либо вычисляют значение , либо изменяют состояние, но не то и другое одновременно. - person stakx - no longer contributing   schedule 23.07.2012