Undefined behavior as per C standard.
Why?
Associativity is only used when there are two or more operators of same precedence.
Associativity of the + operator is left to right, but it doesn’t mean f1() is always called before f2(). The output of following program is in-fact compiler dependent.
In this case if f1() is called first output is 55. But when f2() is called first output is 40. So output is compiler dependent. If in some program output is independent of which function is called, we may say that will be the output.