В чем смысл! Int_variable--?

Я не могу понять, что делает следующий код s:

 if(!s--)

s является int

2 ответа

Решение

! называется negation оператор. Это логический оператор.

Смотрите запись в Википедии здесь.

if(!s--)

Порядок, в котором он выполняется

  1. проверить значение s является 0 или нет, если s является 0, if условие успеха [благодаря ! оператор], иначе неудача.
  2. После этого декремент s на одну единицу.
  3. На основании оценки if условие, продолжить выполнение [код под if условие или следующий блок кода.

На самом деле, это вводит в заблуждение.

Вы тестируете s отличается от 0 (с if (!s)). И потом, каким бы ни был результат, вы уменьшаете его.

Итак, это две разные операции. Это можно записать так:

if (!s)
{
     s--;
     //...
}
else
{
     s--;
}
Другие вопросы по тегам