I was experimenting with some code when I discovered something odd. I had the following code:
#include <iostream>
int add_one_return(int a) {
return a++;
}
void add_one_ref(int &a) {
a++;
}
int main(int argc, char const *argv[]) {
int a1 = 5;
int a2 = 5;
a1 = add_one_return(a1);
add_one_ref(a2);
std::cout << a1 << " " << a2 << std::endl;
return 0;
}
But when I ran it the program printed 5 6
. I went back and changed add_one_return
to:
int add_one_return(int a) {
return ++a;
}
and it worked! Why does ++a
work but not a++
? Is there ever an advantage to a++
, because I also hear that in a for loop you want to use for(int i = 0; i < someVar; ++i) {}
, so why a++
at all?