powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Порядок вычисления
10 сообщений из 110, страница 5 из 5
Порядок вычисления
    #38825084
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Век живи, век учись - дураком помрёшь.
...
Рейтинг: 0 / 0
Порядок вычисления
    #38825406
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Груви. Не уверен что 100% эквивалентный код. Пускай знающие поправят если чо.
Код: python
1.
2.
3.
4.
def v = [ 0 , 0 ]
def i = 0
v[i++] = i++;
println ""+v[0]+" "+v[1]



0 0
...
Рейтинг: 0 / 0
Порядок вычисления
    #38825431
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scala. Почитал здесь http://www.scala-lang.org/files/archive/spec/2.11/

Похоже ... из коробки в ней нету пред- и пост- инкрементов.
...
Рейтинг: 0 / 0
Порядок вычисления
    #38825432
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть добавление единицы +=1
...
Рейтинг: 0 / 0
Порядок вычисления
    #38825458
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonScala. Почитал здесь http://www.scala-lang.org/files/archive/spec/2.11/

Похоже ... из коробки в ней нету пред- и пост- инкрементов.

Небольшая потеря.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Порядок вычисления
    #39267061
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшой апдейт.

В стандарте С++17 будут изменены правила вычисления таких неоднозначных (по предыдущему стандарту) выражений:

1) Присвоение будет вычисляться всегда справа налево (сначала целиком то, что присваивается, потом то, куда присваивается).
2) Постфиксные выражения, такие как цепочки вызовов функций (func_a(a1, a2).func_b(b1, b2)) - всегда слева направо. Т.е. сначала вызывается первая функция, только потом вычисляются аргументы второй функции и т.д. Раньше порядок не был определен, и при интенсивной оптимизации это могло ломаться.
3) Операция << выполняется всегда слева направо (удивительно, но в старом стандарте вывод в поток через << это был UB, т.к. это аналог цепочки вызовов из п.2, просто случайно все работало, точнее не случайно, потому что компиляторы не дураки пишут )

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r2.pdf

Таким образом исходный пример:
Код: plaintext
1.
2.
3.
4.
std::vector<int> v = { 0, 0 };
int i = 0;
v[i++] = i++;
std::cout << v[0] << v[1] << endl;


в новом стандарте имеет строго определенный порядок вычислений, и дает результат
Код: plaintext
1.
2.
3.
4.
5.
// v[i++] = i++ 
int temp = i++; 
v[i++] = temp;
// v == { 0, 0 }
// i == 2
...
Рейтинг: 0 / 0
Порядок вычисления
    #39267167
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskyи дает результат

// v == { 0, 0 }

Э?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Порядок вычисления
    #39267299
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭ?..
Если это вопрос, то он как-то нечетко сформулирован ))
...
Рейтинг: 0 / 0
Порядок вычисления
    #39267311
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyЕсли это вопрос, то он как-то нечетко сформулирован ))

Нет, это уже не вопрос.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Порядок вычисления
    #39270819
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky, какое у вас отношение к первому пункту? Если я не ошибаюсь, вы больше склонялись к другому варианту. Лично мне такой вариант нравится(из п.1), сейчас мне он кажется как минимум логичным. Кнут и другие алгористы для операции присваивания используют следующее обозначение: . Потому её можно (скорее нужно) понимать как вычисление значения b и запись результата в a. Но возможно я вновь что-то упускаю, или о чем-то не думаю. Но на первый взгляд, повторюсь, я считаю такое решение правильным и поддерживаю его
...
Рейтинг: 0 / 0
10 сообщений из 110, страница 5 из 5
Форумы / C++ [игнор отключен] [закрыт для гостей] / Порядок вычисления
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]