Ваше выражение сгруппировано как
(
binaryNumber[i] == 1 || binaryNumber[i] == 0
? i++
: printf("Binary bits can only be 0 or 1!\n")
), i--;
и компилируется с определенным поведением, поскольку printf
возвращает тип int
, а ,
- точка последовательности.Другими словами, i
это всегда с уменьшением.
Обратите внимание, что бит между ?
и :
сгруппирован, как если бы он был в скобках, но это не так длячасть после :
.Другими словами, несколько странно, выражение
!(binaryNumber[i] == 1 || binaryNumber[i] == 0)
? printf("Binary bits can only be 0 or 1!\n"), i--
: i++
будет вести себя так, как вы ожидаете, хотя полагаться на это, вероятно, слишком далеко, даже для меня.