No, there is no unique execution path, nor a single end-state guaranteed for C++.
Even if there are sequenced-before guarantees, one of the most frequent causes are side effets in the evaluation of different arguments: the sequence of the argument evaluation is not defined by the standard and is implementation dependent. The following code can give several valid outputs for example, depending on the compiler used:
int display (int i, int j) {
std::cout << i << " " << j << std::endl;
return i<j ? i:j;
}
void my_funny_func (int a, int b, int c) {
std::cout << a << " " << " " << b << " " c << std::endl;
}
...
int i=1, j=1;
my_funny_func(display(i,j), display(++i, j), display(i, ++j));
The standard limits the guarantees on execution path to observable behavior (i.e. file operations, operations on volatile variables and so on):
1.9/1: Rather, conforming implementations are required to emulate (only) the observable behavior of the abstract machine as explained
below.
1.9/5: A conforming implementation executing a well-formed program shall produce the same observable behavior as one of the possible
executions of the corresponding instance of the abstract machine
with the same program and the same input. However, if any such
execution contains an undefined operation, this International Standard
places no requirement on the implementation executing that program
with that input (not even with regard to operations preceding the
first undefined operation).
This is done on purpose: it is meant to maximize freedom for the optimizer to reorder non-observable events. But this leaves several possible outcomes (especially for non-volatile variables, which may be cached without being stored immediately to memory at every single change).
For java, I think the order of evaluation is determined more precisely (see this other answer). This will reduce significantly the number of valid execution paths.