Здравствуйте, Masterkent, Вы писали:
R>>Не вижу ссылки на "хорошую".
M>Хороших статей по данному вопросу не знаю.
IMHO, ты можешь попробовать её написать, раз уж всё так нереально запущено в этом деле

Тут же не только форум, но и вики и журнал есть
M>Сомнительна польза от прочтения статей, где авторы описывают своё смутное понимание некоего предмета. IMO, чтобы писать статьи, надо обладать определённым багажом знаний, а не одними благими намерениями поучить других.
Ну они хотя бы как-то пытаются помочь, а от "просто критики" ещё меньше пользы тем, кто не разобрался ещё с точками следования...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, XJess, Вы писали:
XJ>int i = 10;
XJ>++i++;
XJ>error C2105: '++' needs l-value
XJ>Вопрос в том, ПОЧЕМУ?
А ЧЕГО СОБСТВЕННО ВЫ ХОТЕЛИ ОТ ЭТОГО КОДА?
моё мнение: и правильно сделал компилятор что ругнулся,
да есть инкременты, но использовать их надо с умом, например:
int nI=0;
myFunc (++nI, nI--){
...
}
// или
while ( --nI ) {
...
} // или ...
то здесь у меня вопросов нет, и у компилятора надеюсь тоже,
а если мне надо увелитчить целое на 2, то я пишу
int nI=0;
nI += 2;
// или
nI = nI + 2;
// ну а если условие только с использованием инкрементов
nI++;
nI++;
//я бы даже не написал
(++nI)++;
//т.к. со скобками и в скобках все понятно, а вот код
()++;
// через некоторе время или другим компилятором может "дать течь"
и заметте не парюсь по пустякам.
ЗАЧЕМ САМИМ СЕБЕ СОЗДАВАТЬ ПРОБЛЕМЫ?
компиляторы как и стандарты пишут люди, ОБЫЧНЫЕ люди, и стандарты (как и компиляторы) со временем изменяются.
Я за стабильно работающий код всегда.
в каждом проекте всегда есть над чем поработать, более серьезное и существенное.....
Здравствуйте, _lamer, Вы писали:
_>myFunc (++nI, nI--){
_>то здесь у меня вопросов нет, и у компилятора надеюсь тоже,
блажен кто верует
Erop:
M>>Хороших статей по данному вопросу не знаю.
E>IMHO, ты можешь попробовать её написать, раз уж всё так нереально запущено в этом деле
А есть ли смысл? Концепция упорядочивания вычислений в C++0x более совершенна как плане интуитивной понятности, так и в плане отсутствия некоторых явно ненужных ограничений. В частности,
int i = 0;
(++i)++;
это вполне well-defined код в рамках C++0x.
1.9 Program execution — p. 15:
The value computations of the operands of an operator are sequenced before the value computation of the result of the operator.
5.3 Unary expressions -> 5.3.2 Increment and decrement:
If x is not of type bool, the expression ++x is equivalent to x+=1
5.17 Assignment and compound assignment operators:
In all cases, the assignment is sequenced after the value computation of the right and left operands, and before the value computation of the assignment expression.
5.2 Postfix expressions -> 5.2.6 Increment and decrement:
The value computation of the ++ expression is sequenced before the modification of the operand object.
Согласно этим правилам, порядок вычислений должен быть следующим:
1) вычисление значения операнда префиксного ++,
2) модификация объекта, осуществляемая префиксным ++,
3) вычисление значения результата префиксного ++ — оно же вычисление значения операнда постфиксного ++,
4) вычисление значения результата постфиксного ++,
5) модификация объекта, осуществляемая постфиксным ++.
Под
If a side effect on a scalar object is unsequenced relative to either another side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is undefined
данная последовательность вычислений, очевидно, не подпадает.
Такой код
(n *= 10) += decimal_digit; // n и decimal_digit обозначают скалярные объекты
C++03 совершенно необоснованно определяет как влекущий undefined behavior (по сути это не более чем издержки не вполне рационального обобщения в правилах).
На данный момент мне гораздо интереснее изучать C++0x и сообщать о найденных ошибках и недочётах комитету по стандартизации C++, чем работать над мало кому нужной подробной статьёй по каким-то точкам следования.
M>>Сомнительна польза от прочтения статей, где авторы описывают своё смутное понимание некоего предмета. IMO, чтобы писать статьи, надо обладать определённым багажом знаний, а не одними благими намерениями поучить других.
E>Ну они хотя бы как-то пытаются помочь
Пытаясь "как-то" помочь, можно ненароком оказать медвежью услугу. Я такое уже не раз наблюдал.
E>а от "просто критики" ещё меньше пользы тем, кто не разобрался ещё с точками следования...
А это уже не тебе решать. Я тоже далеко не во всех областях разбираюсь, и если при изучении чего-то некто будет помогать мне фильтровать вот такие писульки, я буду только рад. Я заинтересован в получении только достоверной и не сбивающей с толку информации.