Что такое логика в выводе этого кода postfix и prefix для одной и той же переменной в одной строке c ++ - PullRequest
0 голосов
/ 24 февраля 2019

Как для постинкремента (a ++) вернуть 5. Как и в случае с приоритетом оператора, a ++ должен выполняться первым и должен возвращать 4.

#include <iostream>
using namespace std;
int main()
{
    int a=4,b=4;
    cout<<++b<<" "<<b++<<" "<<a++<<" "<<++a<<endl;
    return 0;
}
Output: 6 4 5 6

1 Ответ

0 голосов
/ 24 февраля 2019

Вы всегда должны компилировать свой код с включенными предупреждениями.Компилятор скажет вам, что результат может быть неопределенным:

prog.cc: In function 'int main()':
prog.cc:6:22: warning: operation on 'b' may be undefined [-Wsequence-point]
     cout<<++b<<" "<<b++<<" "<<a++<<" "<<++a<<endl;
                     ~^~
prog.cc:6:41: warning: operation on 'a' may be undefined [-Wsequence-point]
     cout<<++b<<" "<<b++<<" "<<a++<<" "<<++a<<endl;
                                         ^~~

Если вы хотите использовать и изменить одну переменную с одним и тем же выражением, вам нужно проверить порядок вычисления и правила последовательности, чтобы увидеть, если он действителен, и каков ожидаемый результат.

...