А почему бы вам просто не избегать таких сомнительных конструкций, Си ведь придуман для избежания рутины при программировании на Ассемблере, а не для того чтобы жестко указывать что можно делать а что нельзя, если не нравится наличие неопределенностей, выберите какой-нибудь C#, Паскаль или прочую лабуду.
Результат неизвестен: классическое неопределённое поведение. Операнды арифметической операции могут вычисляться в любом порядке. Потому неизвестно, какую часть выражения (num++) - (num) код, сгенерированный компилятором, вычислит раньше. Если сначала (num++), а потом (num) - поучим в ответе -1 А если сначала (num), а потом (num++) - получим в ответе 0. P.S. И это одна из причин, почему языки с Си-подобным синтаксисом совершенно не годятся для начального обучения программированию.
Такой подвох можно встретить на тесте квалификации программиста. А преподавателя, который дает такие примеры и рассчитывает на определенный ответ, надо заменять. Мой Dev-C++ выдал в ответе -1, но это совершенно не обязательно