Static Storage Class C ++ Count

Joyce спросил: 13 июня 2018 в 11:18 в: c++

Я новичок в C ++ и задавался вопросом, почему нижний цикл while останавливается на 0 при компиляции и выполнении?

#include <iostream>void func(void);static int count = 10;int main() {while(count--) {
  func();
   }   return 0;
}void func( void ) {
static int i = 5; // local static variable
i++;
std::cout << "i is " << i ;
std::cout << " and count is " << count << std::endl;
}

Пример: https://www.tutorialspoint.com/cplusplus/cpp_storage_classes.htm

1 ответ

Есть решение
ArtHare ответил: 13 июня 2018 в 11:26

После 10 циклов он будет вычислять счетчик, когда счетчик равен нулю. Условные в c ++ только продвигаются, если условие отличное от нуля, поэтому после того, как счетчик достигнет нуля, он остановится.

В последних циклах пары выполнение будет выглядеть так:

  • оценивает условие, когда счетчик равен 1: счетчик не равен нулю, поэтому он продолжает делать тело цикла
  • postfix убывает count, поэтому count становится равным нулю после оценивается условие
  • func () печатает i и count, который теперь равен нулю.
  • оценивает условие теперь, когда count равен 0: условие равно нулю, поэтому оно останавливается и ничего не печатает.
Joyce ответил: 13 июня 2018 в 12:14
Спасибо! "Условия в C ++ только продвигаются, если условие отличное от нуля" помогли. Я исхожу из Javascript, где циклы продолжат идти.
ArtHare ответил: 14 июня 2018 в 11:28
В Java язык обеспечивает, чтобы входные данные в условные выражения были логическими, поэтому вы не можете просто помещать int там.

Дополнительное видео по вопросу: Static Storage Class C ++ Count

STATIC- Storage class in c-52

C - Static Storage Class

Lecture 34 Storage classes in C Language Part 1 of 2 Hindi