2013-10-11 3 views
0

Я знаю, что хотя (1) является бесконечным циклом, но что именно делает (i)?Что делает (i)?

int i=5; 
... 
while(i) 
{ 
i=i-1; 
printf("%d\n", i); 
} 

В конце будет напечатано число «0». Я не понимаю, почему это не бесконечный цикл и почему он останавливается на 0?

ответ

6

Он останавливается, так как 0 оценивает по: false.

0

Это неявно означает while (i!=0). Таким образом, ваш код эквивалентен

int i=5; 
... 
while(i!=0) 
{ 
i=i-1; 
printf("%d\n", i); 
} 

, который объясняет его поведение.

0

Все ненулевые целые числа интерпретируются как true, а 0 - false. Если это в C (а не C++), то на самом деле нет фактически встроенных булевых литералов true и false. Значение false в C представлено целым числом нуль и истинным значением с помощью ненулевого целого.

1

Нуль означает, что значение False и любое ненулевое (даже плавающее) значение означает True.

Рассмотрим это:

float i=5.5; 
... 
while(i) 
{ 
    i=i-1.5; 
    printf("%d\n", i); 
} 

Это также работает, даже если он не является целым числом. Итак, хотя (i) просто означает while (i! = 0)

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