2014-12-05 4 views
-3

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

if(!s--) 

s является int

+1

1) это не функция. 2) использовать разделить и победить. там всего три вещи: 'if'. '!' и '--'. –

+0

Сначала компилятор проверяет, равен ли он равен нулю, чтобы войти в блок if. Тогда s уменьшается на 1. – Mukit09

+0

Thx all! Я понимаю сейчас :) –

ответ

2

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

См. Здесь wikipedia entry.

if(!s--) 

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

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

прямо сейчас, спасибо –

+0

@JensGustedt Спасибо вам. :-) –

3

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

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

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

if (!s) 
{ 
    s--; 
    //... 
} 
else 
{ 
    s--; 
}