Russian Qt Forum

Программирование => С/C++ => Тема начата: Igors от Декабрь 20, 2014, 08:26



Название: Порядок вычислений
Отправлено: Igors от Декабрь 20, 2014, 08:26
Псевдокод
Код
C++ (Qt)
if (offs1 > 0) dst1[index++] = src1[index] + offs1;
if (offs2 > 0) dst2[index++] = src2[index] + offs2;
Наивно полагал что сначала вычисляется правая часть, потом левая. Работало в 32-bit но вылетело в 64. Пришлось разориться на скобки
Код
C++ (Qt)
if (offs1 > 0) {
dst1[index] = src1[index] + offs1;
++index;
}


Название: Re: Порядок вычислений
Отправлено: Bepec от Декабрь 20, 2014, 08:42
Надо ввести новый раздел - теоритические утверждения специально для тем Igors :)



Название: Re: Порядок вычислений
Отправлено: _Bers от Январь 21, 2015, 08:29
Код:
dst1[index++] = src1[index] + offs1;

c++03 UB

c++11 нужно уточнять в стандарте. Там какие то уточнения насчет точек следования.

Популярное чтиво:
http://alenacpp.blogspot.co.il/2005/11/sequence-points.html