краткий код для сравнения 4 чисел - PullRequest
1 голос
/ 04 апреля 2011

Я должен сравнить 4 переменные a,b,c,d, если какая-либо из них -1 return false. и насколько бы это могло быть? может быть некоторая математическая операция могла быть сделана !! Я не люблю тратить так много символов или строк на эту простую вещь.

Ответы [ 2 ]

10 голосов
/ 04 апреля 2011

Обычно:

return a!=-1 && b!=-1 && c!=-1 && d!=-1;

Так как ~(-1) == 0 в 2-х машинах дополнения, а 0 - это ложное значение, мы можем уменьшить значение выше до

return ~a && ~b && ~c && ~d;

или, не полагаясь на дополнение 2:

return a+1 && b+1 && c+1 && d+1;

, но оно имеет неопределенное поведение при переполнении.

(Но, пожалуйста, используйте обычный способ. Вы можете забыть, что делает этот умный взлом спустя годы.)

1 голос
/ 05 апреля 2011

Если ваши числа могут быть либо неотрицательными, либо -1, то вы можете использовать следующее:

return~(a|b|c|d);

(убрал пробел, чтобы он выглядел более кратко)

...