Условные операторы C всегда возвращают [1 или 0] или они возвращают [0 или «что-то отличное от нуля»].Я спрашиваю, потому что:
псевдокод -
foo (адрес, следует отправить):
регистр >> = 1
регистр << = 1 // для сброса битв первой позиции <br>register | = shouldSend //, чтобы сигнализировать, следует ли отправлять или нет
проблема возникает, если кто-то передает в значение shouldSend значение true больше единицы (поскольку только 0 равно falseа все остальное верно, технически это верно).Так как я непосредственно ИЛИ указываю истинное значение shouldSend с регистром, лучше не говорить 0xFF!У меня уже есть решение, так что вопрос скорее для любопытства.Мне интересно, если:
foo (address, shouldSend):
регистр >> = 1
регистр << = 1 // для сброса бита в первой позиции <br>регистр| = (shouldSend> 0) // сигнализировать, следует ли отправлять или нет
решает проблему?я бы подумал, что теперь проблема передачи 0xFF (или вообще чего-то большего, чем 1) маскируется условным Си.но это только при условии, что условные выражения C гарантированно возвращают [0 или 1].
ps - я также понимаю, что это, вероятно, зависит от компилятора, но что говорит об этом стандарт ANSI?