静的なboolの配列が正しく初期化されないのはなぜですか?最初のものだけが初期化されます - これはアレイが静的であるためです。スタティックブール配列セットとして初期化されない
次のMWEはGCCでコンパイルされ、自分の問題を説明するためにメインプログラムに移行したことを私が書いている機能に基づいています。私はC++ 11を使ってみました。私の理解は、この配列は静的で、trueに初期化されているため、これは私が自分の関数を初めて入力するときに常に出力されるべきだからです。したがって、このMWEでは一度印刷する必要があります。
#include <iostream>
using namespace std;
const int arraysize = 10;
const int myIndex = 1;
static bool firstTimeOverall = true;
int main()
{
static bool firstCloudForThisClient[arraysize] = {true};
cout.flush();
if (firstCloudForThisClient[myIndex])
{
cout << "I never get here" << endl;
firstCloudForThisClient[myIndex] = false;
if (firstTimeOverall)
{
firstTimeOverall = false;
cout << "But think I would get here if I got in above" << endl;
}
}
return 0;
}
あなたは 'firstCloudForThisClient'のすべての要素が' true'に初期化されていると思いますか? – quamrana