Должен ли я проверить, если равен 1 или не равен 0? - PullRequest
10 голосов
/ 08 июня 2010

Я кодировал здесь на днях, написал пару операторов if с целыми числами, которые всегда либо 0, либо 1 (практически действуя как bool s). Я спросил себя:

При тестировании на положительный результат, который лучше; тестирование на int == 1 или int != 0?

Например, при заданном int n, если я хочу проверить, является ли он true, я должен использовать n == 1 или n != 0?

Есть ли какая-либо разница в скорости, вычислительной мощности и т. Д.?

Пожалуйста, игнорируйте тот факт, что int может быть больше / меньше чем 1 / 0, это не имеет значения и не происходит.

Ответы [ 17 ]

2 голосов
/ 08 июня 2010
IF INT IS 1
NEXT SENTENCE
ELSE MOVE "INT IS NOT ONE" TO MESSAGE.
1 голос
/ 08 июня 2010

Я был из мира c. Сначала я не очень разбираюсь в объективе. Через некоторое время я предпочитаю что-то вроде:

if (int == YES)

или

if (int == NO)

в к, т. Е .:

if (int == true)
if (int == false)

в наши дни я использую varchar вместо integer в качестве ключей таблицы, например

 name   marital_status
------  --------------
 john      single
 joe       married

намного лучше, чем:

 name   marital_status
------  --------------
 john         S
 joe          M

или

 name   marital_status
------  --------------
 john         1
 joe          2
1 голос
/ 08 июня 2010

Я согласен с тем, что большинство людей сказали в этом посте.Гораздо эффективнее использовать логические значения, если у вас есть одна из двух различных возможностей.Это также значительно упрощает чтение и интерпретацию кода.

if (bool) {...}

1 голос
/ 08 июня 2010
if( is_numeric( $int ) ) { its a number }
elseif( !$int ) { $int is not set or false }
else { its set but its not a number }

конец обсуждения: P

1 голос
/ 08 июня 2010

Я бы сказал, что это зависит от семантики, если вы зададите условие

while ( ! abort ) отрицание в порядке.

if ( quit ) break; также будет в порядке.

1 голос
/ 08 июня 2010

При использовании целых чисел в качестве логических значений я предпочитаю интерпретировать их следующим образом: false = 0, true = не ноль.

Я бы написал операторы условия как int == 0 и int! = 0 .

0 голосов
/ 08 июня 2010

(при условии, что ваши целые числа могут быть только 1 или 0) Два утверждения логически эквивалентны. Я бы порекомендовал использовать синтаксис ==, потому что я думаю, что он понятен большинству людей, когда вы не вводите ненужные отрицания.

...