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?