2015-04-26 5 views
-4

Я пытался помочь другу с проблемой, он спросил меня, как он может сделать GCD из 3 чисел, используя метод Nicomachus. Все прошло отлично, пока я не попытался ввести это условие:Два && в состоянии?

while (a!=b && b!=c && a!=c) 

Но проблема в том, что это будет выполняться только один раз. Я изменил его в этом:

while (a!=b && b!=c) 

Я знаю, что это приводит в одно и то же, но мне было просто интересно, почему первый не может работать? Я не могу добавить 2 && в таком же состоянии?

+0

Вы можете добавить много && в том же состоянии :) Ключ в том, что вы делаете внутри своего цикла while? – ssantos

+2

«Я знаю, что это приводит к тому же», - нет, это не так. Они разные, если 'a' равно' c', но не 'b'. –

ответ

0

Вы, безусловно, можете иметь 2 && в таком же состоянии - вы можете иметь столько, сколько хотите. Тот факт, что цикл останавливается, зависит от чего-то другого.

Кстати, если у вас = 10, B = 20, C = 10, то первое условие (while (a!=b && b!=c && a!=c)) остановится (потому что a != c было бы ложным), но второй один (while (a!=b && b!=c)) будет продолжаться. Наверное, это и произошло.

Трансформаторная 3 условия в только 2 может быть сделано в противном случае, то есть, если вы хотите, чтобы убедиться, что они все равны: a ==b && b == c автоматически подразумевает, что a == c (см Transitive relation of equality), так что добавление этого 3-го состояния или не Безразлично Не имеет значения. Но то же самое верно и для неравенства, как я показал.

+0

Спасибо, я вижу, что я сделал не так, я пытался сделать условие вроде while (a, b, c, отличный друг от друга), я в конце концов объявил переменную, которая бы взяла true, если a = b && b = c и написал (n! = true). Спасибо за ваш ответ и извините, если я потратил немного времени на мой вопрос :) – vladvlad23