@ user4581301 описание проблемы, я проверил, и он прав.
в этом коде
if (childrens.at(j)->rules.size() > tempMax) {
tempMax = childrens.at(j)->rules.size();
}
rule.size() возвращают без знака и температуры tempMax является ИНТ, что это начальное значение INT_MIN, оптимизатор игнорировать это, потому что без знака междунар всегда больше, чем отрицательный, но после входа, если тело tempMax стало положительным, и я не знаю, почему оптимизатор его игнорирует!
Я пишу эту новую программу
int _tmain(int argc, _TCHAR* argv[])
{
vector<bool> a;
for (size_t i = 0; i < 20; i++)
{
a.push_back(true);
}
int tempMax = INT_MIN;
for (size_t i = 0; i < a.size(); i++)
{
if (a.size() > tempMax)
{
tempMax = a.size();
}
}
cout << tempMax << endl;
return 0;
}
и выход -2147483648
и после изменения типа a.size() к (межд) a.size() это исправлено:
int _tmain(int argc, _TCHAR* argv[])
{
vector<bool> a;
for (size_t i = 0; i < 20; i++)
{
a.push_back(true);
}
int tempMax = INT_MIN;
for (size_t i = 0; i < a.size(); i++)
{
if ((int)a.size() > tempMax)
{
tempMax = a.size();
}
}
cout << tempMax << endl;
return 0;
}
попытайтесь закрыть оптимизацию. возможно, помогает – ataman
, возможно, это проблема типа. Существуют ли типы 'tempInt',' tempMax' и 'size()' все равно? – cambunctious
@ataman Как это могло бы помочь? – juanchopanza