2014-10-13 6 views
0

Хорошо, так как «приятно» играет C с использованием нескольких логических операторов в одном заявлении if? Например, если я хочу сравнить две точки, чтобы увидеть, смежна ли одна с другой, будет ли она работать с if(X1 == X2 && Y1-- == Y2 || Y1++ == Y2 || Y1 == Y2 && X1-- == X2 || X1++ == X2) или мне нужно разбить ее на 4 else if заявления?несколько логических операторов в c

+0

Не связано с вашей проблемой, но изменение значений X и Y операторами '++' и '--', вероятно, не очень хорошая идея. Вместо написания, например. 'Y1 ++ == Y2' Я бы предпочел написать' Y1 + 1 == Y2' –

ответ

3

Вы можете абсолютно использовать то, как вы это делаете, до тех пор, как вы правильно используете (), чтобы определить, какие условия являются частью внешних паратенхов и какая часть внутренней. Например, если ваше условие верно, только если X1 == X2 и Y1-- == Y2 || Y1++ == Y2 || Y1 == Y2 и X1-- == X2 || X1++ == X2. затем использовать parathenses должным образом, как это:

if((X1 == X2) && (Y1-- == Y2 || Y1++ == Y2 || Y1 == Y2) && (X1-- == X2 || X1++ == X2)) 

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

+0

Итак, тогда, если функции parens работают здесь, чтобы указать порядок, почему я получил ошибки в прошлом, когда использовал parens для указания OOS для арифметики, когда делаю назначение? – Phoxxent