2016-10-19 8 views
0

Я пытаюсь понять логическую логику и операторы. Я нашел этот пример, но не могу понять, почему это выражение будет оцениваться в соответствии с приведенным ниже.Почему! (0 || 1 || 0) - 0?

Скажем, а = 0, Ь = 1, с = 0

  Expression   Will Evaluate to 
val1 = !(a || b || c);  !(0 || 1 || 0) = !(1) = 0 

Как я понимаю, знач1 не a или нет b или нет c, так почему он оценивает не 1?

ответ

0

.... знач1 не или не б или не с ...

Нет, это неверно. Сначала вычисляется 0 || 1 || 0 внутри скобок. В этом примере это правильно.

0

Скажем val1 = 1 1 = !(0 || 1 || 0) 1 = !(1) - потому что это единственное значение, которое равно знач1 1 = 0 - то это сводит на нет его впоследствии

0

Не (а или б или в) оценивает или операции первого, так это не то же самое (не a) или (не b), либо (не c).

Действительно, это то же самое, что и (а) и (а не b) И (а не в).

Любой операнд к ИЛИ, являющемуся ложным, даст ложный результат, а затем НЕ переворачивает его в истинное значение для выражения в целом.

Как и в случае с арифметикой целочисленного или действительного числа, порядок работы может сильно изменить результат.

0

Пошли шаг за шагом.

val1 = !(0 || 1 || 0);

Во-первых, 0 || 1 оценит 1, потому что «истинно, если хотя бы один из них, правда, иначе ложь», и 1 = истина, 0 = ложь || средства.

Так теперь val1 = !(1 || 0); Здесь 1 || 0 снова оценить 1, потому что по крайней мере один из них 1. Теперь у нас есть val1 = !(1);. ! означает противоположный вход, так что !(1) = 0.

Как я понимаю, знач1 не или нет б или нет с, так почему он оценивает не 1?

Поскольку вы говорите, будет написано как val1 = !0 || !1 || !0. Его совсем другое, потому что оно не имеет круглых скобок. Скобка означает «сначала оценить все в скобках».

Смежные вопросы