Size: a a a

2020 October 31

БП

Борис Попов... in pro.cxx
Intel Parallel Studio. Можно-ли перенести студенческую лицензию на другой комп? Старый бук с лицензией у дочери помирает, а тут новый бук приехал. Преподаватель (со слов ребëнка) сказал, что ключ можно вводить однократно. Есть решения?
источник

IZ

Ilia Zviagin in pro.cxx
Пожалуйста, вопросы по обучению в @supapro
источник

A

Anatoly in pro.cxx
Борис Попов
Intel Parallel Studio. Можно-ли перенести студенческую лицензию на другой комп? Старый бук с лицензией у дочери помирает, а тут новый бук приехал. Преподаватель (со слов ребëнка) сказал, что ключ можно вводить однократно. Есть решения?
Конкретно по ключу не знаю, но раньше можно было зарегистрироваться на сайте Intel и получить лицензию для опенсорсных проектов на год, достаточно ссылку на гитхаб указать со своими проектами. Для студента, если там лабы, может будет достаточно.
источник

VS

Vladimir SHCHerba in pro.cxx
источник

ГП

Глеб Пониклеев... in pro.cxx
Здравствуйте! Не могли бы Вы мне объяснить что означает эта строчка: ++n *= (n == max_scens ? 0 : 1);?
источник

m

magras in pro.cxx
Глеб Пониклеев
Здравствуйте! Не могли бы Вы мне объяснить что означает эта строчка: ++n *= (n == max_scens ? 0 : 1);?
Если n - встроенный тип, она означает UB, так как n дважды изменяется в одном выражении:
1) ++n
2) n *= ...
источник

И

Иλьямбда in pro.cxx
Глеб Пониклеев
Здравствуйте! Не могли бы Вы мне объяснить что означает эта строчка: ++n *= (n == max_scens ? 0 : 1);?
Эта строка некорректна потому, что порядок вычисления операндов не определён
источник

AS

Anatoly Shirokov in pro.cxx
Глеб Пониклеев
Здравствуйте! Не могли бы Вы мне объяснить что означает эта строчка: ++n *= (n == max_scens ? 0 : 1);?
n = (n+1)%max_scens
источник

ГП

Глеб Пониклеев... in pro.cxx
Anatoly Shirokov
n = (n+1)%max_scens
А если max_scens == 0?
источник

AS

Anatoly Shirokov in pro.cxx
Глеб Пониклеев
А если max_scens == 0?
Будешь гореть в аду
источник

ГП

Глеб Пониклеев... in pro.cxx
👍
источник

m

magras in pro.cxx
magras
Если n - встроенный тип, она означает UB, так как n дважды изменяется в одном выражении:
1) ++n
2) n *= ...
Или я не прав, так как префиксный инкремент не имеет сайд эффекта?
источник

ГП

Глеб Пониклеев... in pro.cxx
Не знаю
источник

AN

Alexander N in pro.cxx
Вспомнилась классика жанра:
int i = 0;
i += i++ + ++i;

Шланг кстати говорит сразу мол unsequenced modification and access to 'i'
источник

АК

Артём Колпаков... in pro.cxx
http://eel.is/c++draft/expr.ass#1 разве этот пункт не гарантирует вычисление сперва правого операнда?
источник

АК

Артём Колпаков... in pro.cxx
"The right operand is sequenced before the left operand"
источник

m

magras in pro.cxx
Артём Колпаков
"The right operand is sequenced before the left operand"
Черт, не успел.)
Да, я тоже нашел эту цитату и склоняюсь к тому, что в текущем стандарте поведение такого выражение определено.
источник

m

magras in pro.cxx
Артём Колпаков
"The right operand is sequenced before the left operand"
А этого может быть не достаточно:

> The side effect of the built-in pre-increment and pre-decrement operators is sequenced before its value computation (implicit rule due to definition as compound assignment)

> The right operand is sequenced before the left operand

Но порядок применения сайд эффекта не определен по отношению к вычислению правого аргумента, который зависит от сайд эффекта.

gcc тоже не уверен в этом, но так как в conexepr не может быть UB, видимо где-то еще есть что-то что форсит порядок.
источник

m

magras in pro.cxx
magras
А этого может быть не достаточно:

> The side effect of the built-in pre-increment and pre-decrement operators is sequenced before its value computation (implicit rule due to definition as compound assignment)

> The right operand is sequenced before the left operand

Но порядок применения сайд эффекта не определен по отношению к вычислению правого аргумента, который зависит от сайд эффекта.

gcc тоже не уверен в этом, но так как в conexepr не может быть UB, видимо где-то еще есть что-то что форсит порядок.
Кажется разобрался. Префиксный инкремент определен через оператор присваивания, которое гарантирует что:
> the assignment is sequenced before the value computation of the assignment expression
источник

CD

Constantine Drozdov in pro.cxx
magras
А этого может быть не достаточно:

> The side effect of the built-in pre-increment and pre-decrement operators is sequenced before its value computation (implicit rule due to definition as compound assignment)

> The right operand is sequenced before the left operand

Но порядок применения сайд эффекта не определен по отношению к вычислению правого аргумента, который зависит от сайд эффекта.

gcc тоже не уверен в этом, но так как в conexepr не может быть UB, видимо где-то еще есть что-то что форсит порядок.
при этом gcc считает, что
https://godbolt.org/z/7Tc7bW
    int n = 2;
   ++n *= n; //итого 9
источник