Search code examples
c++cmathoperator-precedence

C/C++ Math Order of Operation


So I know that C++ has an Operator Precedence and that

int x = ++i + i++;

is undefined because pre++ and post++ are at the same level and thus there is no way to tell which one will get calculated first. But what I was wondering is if

int i = 1/2/3;

is undefined. The reason I ask is because there are multiple ways to look at that (1/2)/3 OR 1/(2/3). My guess is that it is a undefined behavior but I would like to confirm it.


Solution

  • In your example the compiler is free to evaluate "1" "2" and "3" in any order it likes, and then apply the divisions left to right.

    It's the same for the i++ + i++ example. It can evaluate the i++'s in any order and that's where the problem lies.

    It's not that the function's precedence isn't defined, it's that the order of evaluation of its arguments is.