Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, jazzer, Вы писали:
А>>>int a[2]; А>>>int i = 0; А>>>a[i++] = i эквивалентно a[0] = 0;
J>>либо а[0] = 1;
K>что, думаешь здесь неопределённое поведение?
ну смотри сам, так как во всей этой инструкции всего одна точка следования в конце инструкции, здесь 2 пути вычислений, приводящие к разным результатам:
1) сохраняем значение i (0) для присваивания, выполняем разадресацию [0], выполняем присваивание (0), инкрементим i.
2) выполняем разадресацию [0], инкрементим i, выполняем присваивание (1).
You will always get what you always got
If you always do what you always did
Где глюк? :)
От:
Аноним
Дата:
22.09.04 10:40
Оценка:
Вот напоролся на такую проблему
есть код
typedef std::map<std::string,std::string> ConfigStrings;
ConfigStrings сonfigStrings;
std string buffer = "<DEMOMODE> 0"
boost::char_separator<char> sep("<> ");
Tokenizer tok(buffer,sep);
Tokenizer::iterator beg = tok.begin();
configStrings[*beg++] = *beg;
в результате configStrings["DEMOMODE"] = "0".
Разве так должно быть?
ведь
int a[2];
int i = 0;
a[i++] = i эквивалентно a[0] = 0;
И еще что интересно,если заменить std::string классом-оберткой от std::string,то
configStrings["DEMOMODE"] = "DEMOMODE"
Re: Где глюк? :)
От:
Аноним
Дата:
22.09.04 10:51
Оценка:
Ну так мэп то индексируется стрингом, а итератор "указывает" на пару строка-строка