Я читал о некоторых вопросах stackoverflow, которые отправляют или предварительно увеличивают переменную в вызове функции, могут привести к неопределенному поведению.Является ли доступ к элементу массива с использованием пост-инкрементированной переменной неопределенного поведения в C++?
Поскольку в векторе оператор доступа к элементу массива, operator[]()
является вызовом функции, то же самое верно для следующего примера кода?
double p_step = 1.0/(double)_progress_bar_chars.size();
int ixx = 0;
for(double p = 0.0; p < 1.0; p += p_step)
_progress_bar_chars[ixx ++] = (p <= progress ? '=' : ' ');
Приведенный выше код вызывает неопределенное поведение?
Для справки:
std::vector<char> _progress_bar_chars;
_progress_bar_chars.resize(50);
double progress = 0.5;
Наконец, делает это независимо от того, что я использую зЬй :: вектор здесь, а не в чистом массиве или куче выделяется массив?
использовать его как это не приведет к непредсказуемому поведению, может быть, [эта страница] (HTTP: //en.cppreference. com/w/cpp/language/eval_order) может помочь вам больше –
Поскольку '_progress_bar_chars [ixx ++]' совпадает с '_progress_bar_chars.operator [] (ixx ++)' Я бы сказал, что это вопрос, возможно дубликат http://stackoverflow.com/questions/598148/is-it-legal-to-use-the-increment-operator-in-ac-function-call –