Почему есть разница в выдаче для кода на C ++ 11 и C ++ 17? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть кусок кода

     #include <bits/stdc++.h>
      using namespace std;
      typedef long long ll ; 
      int main() 
      { 
             ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0) ; 
             int i, j;
             i = j = 5;
             j = i++ + (i*10);
             cout<<i<<" "<< j <<" "<<i++;

    }

Вывод кода для c ++ 17: 6 65 6 Вывод кода для c ++ 11: 7 65 6

Почему такая разница ?

1 Ответ

1 голос
/ 16 апреля 2020

До C ++ 17 выражение j = i++ + (i*10); демонстрировало неопределенное поведение.

В C ++ 17 правила языка были изменены, чтобы определить поведение таких выражений. (те, которые изменяют переменную и используют ее в одном и том же выражении)

Итак, в зависимости от вашего компилятора, вашей платформы, настроек оптимизации, которые вы используете, фазы луны и т. д. c, вы может получить тот же ответ ... или нет.

...