Called a function with "cout" statement inside a "cout" statement
c++, cout, function
Solution
The order of evaluation of arguments to a function is unspecified. Your line looks like this to the compiler:
operator<<(operator<<(operator<<(cout, "The Lucky "), print()), endl);
The primary call in the statement is the one with endl as an argument. It is unspecified whether the second argument, endl, is evaluated first or the larger sub-expression:
operator<<(operator<<(cout, "The Lucky "), print())
And breaking that one down, it is unspecified whether the function `print()` is called first, or the sub-expression:
operator<<(cout, "The Lucky ")
So, to answer your question:
What causes this behavior? Does this has to do with C++ standard or its behavior vary from one compiler to another?
It could vary from compiler to compiler.
Problem
I came across this rather vague behavior when messing around with code , here's the example : ``` #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; } ``` In my code, the statement with comment `//This line`is supposed to print out `The Lucky No : 3`, but instead it was printed `No : The Lucky 3`. What causes this behavior? Does this have to do with C++ standard or its behavior vary from one compiler to another?