a [8] - массив булевых элементов. Я пытаюсь вычислить логическое выражение, похожее на следующее.Являются * и + эквивалентными, соответственно, && и || на булевых операндах?
bool a[8];
.....
bool result=a[0]*(a[3]+a[6]*(a[4]+a[7]*a[5]))+a[1]*(a[6]*a[3]+a[4]+a[7]*a[5])+a[2]*(a[5]+a[7]*(a[4]+a[6]*a[3]));
Выражение длинное, но концептуально ничего сложного. Единственная ошибка, кажется, что результат отличается, когда я заменяю * в выражении & & (в обоих случаях я ожидаю логическое И) или заменяю + на || (ожидая логического ИЛИ).
Я не уверен, какие из них были бы правильными, логические операторы или математические обозначения умножения, добавления и т. Д. Хуже того, ни одна из них не дает никакой ошибки, то есть компилятор доволен обоими. Какой из них безопаснее и правильнее?
@EdHeal: Пожалуйста, напишите ответы в области ответа. –
Приобретено за его исключительную интригующую особенность. – Bathsheba