Question: In C and C++, is there a fixed order for evaluation of parameter to the function? I mean, what do the standards say? Is it `left-to-right` or `right-to-left`?
I am getting confusing information from the books.

Is it necessary that `function call` should be implemented using `stack only`? What do the C and C++ standards say about this?

Answer: 
Keeping it safe: the standard leaves it up to the compiler to determine the order in which arguments are evaluated. So you shouldn't rely on a specific order being kept.
Just only to speak for **C** language, the order of evaluation inside the function parameters depend on compiler. from **The C Programming Language** of **Brian Kernighan** and **Dennis Ritchie**;

> 
> Similarly, the order in which function arguments are evaluated is not
>  specified, so the statement
> 
> 
> `printf("%d %d\n", ++n, power(2, n)); /*WRONG */`
> 
> 
> can produce different results with different compilers,
>  depending on whether n is incremented before power is called. The
>  solution, of course, is to write
> 
> 
> `++n;`
> 
> 
> `printf("%d %d\n", n, power(2, n));`
> 
> 
>