1

Sometimes its very hard to tell that in what order the expression will be evalauted. Is their any set of rules to know that the expression i have written will show undefined behaviour?

The expression : printf("%d %d\n", ++n, power(2,n)); its very hard to say wheather the ++n is evaluated first or the power(2,n). This line is written in K&R. However, I see this expression absoultely fine. I'll assume that n will be incremented and used by the function call power(2,n).

Also, an expression like A[i++] = A[j++]. Right side of the assignment is always evaluated first and the value will be assigned to the left hand side according to what i see. But, this doesn't happen right? The nature of the expression is ambigous(totally depends on how machine pretend it).

Expression, A[i] = i++. According to what I see, i will be incremented and that value will be assigned to the left hand side?

But these above expressions doesn't work the way i think they do. What is the possible way to write the expression so i don't get any kind of unexpected result specially caring about those increment or decrement operators.

Cœur
  • 37,241
  • 25
  • 195
  • 267
codejam.tk
  • 73
  • 1
  • 6

0 Answers0