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?
C and C++ are two completely different languages; don’t assume the same rules always apply to both. In the case of parameter evaluation order, however:
C99:
[Edit]
C11 (draft):
C++:
Neither standard mandates the use of the hardware stack for passing function parameters; that’s an implementation detail. The C++ standard uses the term “unwinding the stack” to describe calling destructors for automatically created objects on the path from a
tryblock to a throw-expression, but that’s it. Most popular architectures do pass parameters via a hardware stack, but it’s not universal.[Edit]
This is not in the least surprising, since easily 90% of books written about C are simply crap.
While the language standard isn’t a great resource for learning either C or C++, it’s good to have handy for questions like this. The official™ standards documents cost real money, but there are drafts that are freely available online, and should be good enough for most purposes.
The latest C99 draft (with updates since original publication) is available here. The latest pre-publication C11 draft (which was officially ratified last year) is available here. And a publicly availble draft of the C++ language is available here, although it has an explicit disclaimer that some of the information is incomplete or incorrect.