Посмотрите этот кусок кода:GCC генерируется с ума программу
vector<Command*> list;
int cur = -1;
if(cur < (list.size()-1))
{
cout<<"redo"<<endl;
++cur;
list[cur]->execute(text);
cout<<"pos: "<<cur<<" size: "<<list.size()<<endl;
}
else
{
cout<<cur<<" "<<(list.size()-1)<<" "<<(cur > (list.size()-1))<<endl;
}
if(-1>2)
cout<<"true"<<endl;
else
cout<<"false"<<endl;
Это печать:
-1 2 1
false
, что означает:
cur = -1
list.size()-1 = 2
cur > list.size()-1 == true
, т.е.-1 > 2
но другой, если говорит, что это ложь и математике сказать то же самое.
Мой GCC версии: GCC версии 4.8.0 (rev2, Построенный MinGW-строит проект)
я проблема или GCC?
Где вы проверяете, что cur> list.size() -1 == true? – user2548635
Что такое тип данных 'cur'? –
list.size() is 3 cuz i print cout << (list.size() - 1), и он печатает 2 – brlebtag