更新: ユーザーecatmurによってマークされているように、それはIn C99, is f()+g() undefined or単に unspecified?の複製です。(質問はC99について尋ねますが、答えはC ++では変わりません)。答えは未指定です (どちらの場合も)。
次の C++14 コード フラグメントを検討してください。
int i = 0;
int x() { i++; return i;}
int y() { i++; return i;}
bool z = (x() > y()); // unspecified or undefined ?
の値が指定されていz ないだけですか、それとも未定義の動作ですか?
私の理解によると (私が間違っている場合は修正してください)、種類の式:i++ > i++シーケンスポイントのペア間で同じ変数を2回変更しているため、未定義の動作になりますが、上記の場合はどうなりますか (突然変異が別々に発生する場合)機能) ?
そして、これはどうですか:
bool z = (x() > i++); // undefined or unspecified now ?