Consider the below program.
What would the output of the above program – ‘5’ or ’10’?
The output is undefined as the order of evaluation of f1() + f2() is not mandated by standard. The compiler is free to first call either f1() or f2(). Only when equal level precedence operators appear in an expression, the associativity comes into picture. For example, f1() + f2() + f3() will be considered as (f1() + f2()) + f3(). But among first pair, which function (the operand) evaluated first is not defined by the standard.
Thanks to Venki for suggesting the solution.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Order of operands for logical operators
- What is evaluation order of function parameters in C?
- Operands for sizeof operator
- Sorting 2D Vector in C++ | Set 2 (In descending order by row and column)
- Sorting Vector of Pairs in C++ | Set 2 (Sort in descending order by first and second)
- Program to copy the contents of one array into another in the reverse order
- Why to use fgets() over scanf() in C?
- Thread functions in C/C++
- How to Compile and Run C/C++/Java Programs in Linux
- How to get the current position of cursor from output screen in C?
- Methods to concatenate string in C/C++ with Examples
- Compiling with g++
- Why learning C Programming is a must?
- Lex program to count the number of lines, spaces and tabs