2015-04-29 5 views
-4
#include<stdio.h> 
int main() 
{ 
    int i=0, k=0, m; 
    m = ++i || ++k; 
    printf("%d, %d, %d\n", i, k, m); 
    return 0; 
} 

возвращаетсяВлияние || -оператора на ++ х

1,0,1 

Почему к = 0, а не 1? каков эффект || -оператора на ++ k? Спасибо!

пример: https://ideone.com/Fjsbii

+4

См http://en.wikipedia.org/wiki/Short-circuit_evaluation – Michael

+1

Или [это мой ответ] (http://stackoverflow.com/a/29141619/2307070) –

+0

, что имеет смысл, благодаря –

ответ

2

В || ИЛИ, если первое условие истинно, то оно не будет проверять второе условие (оно будет пропускать 2-ое условие)..

В

m = ++i || ++k; 

в этом состоянии после того, как ++i, значение i станет 1, так как первое условие true, поэтому он будет пропускать второе условие. поэтому операция ++k не будет выполнена.
И, следовательно, k останется 0.

Как и при использовании &&, а первое условие - false, оно пропустит второе состояние. и результат будет 0 (false).

+1

Назовите слово «короткое замыкание» где-нибудь. –

Смежные вопросы