Search code examples
c++postfix-operatorprefix-operator

Turbo C++ (not visual)(Postfix and prefix operators)


When I run this program I get output as 2

#include<iostream.h>
#include<conio.h>
void main(){
    clrscr();
    int a = 10;
    int c = a-- - --a;
    cout<<c;
    getch();
}

... but when I just modify it to

#include<iostream.h>
#include<conio.h>
void main(){
    clrscr();
    int a = 10,c;
    c = a-- - --a;
    cout<<c;
    getch();
}

... I get output 0. WHY? In java both the of them gave output as 2. Whats wrong with C++? Explain :(


Solution

  • Nothing wrong with C++, but there's something wrong in how you're using it.

    The expression a-- - --a has undefined behavior in C++, and anything can happen.

    The cleanest solution is to not write code like that (I wouldn't do it even if it were legal).