I have this code and I searched for hours why it fails to print my income
int const income = 0;
std::cout << \"I\'m sorry, your income is: \" < inco
When I compile this code using GCC 4.3.4, I see a warning:
prog.cpp: In function ‘int main()’:
prog.cpp:6: warning: right-hand operand of comma has no effect
...though why it's a warning rather than an error, I don't know.
EDIT: In fact, I don't know which comma it's referring to either, because this code:
int const income = 0;
std::cout << "I'm sorry your income is: " < income;
...generates the same warning (see here).
It does compile with g++ 4.4.3
#include <iostream>
int main (void)
{
int const income = 0;
std::cout << "I'm sorry, your income is: " < income;
}
However, when running it with -Wall (good practice!), I got a funny message:
:~/stack$ g++ test.cpp -o temp
:~/stack$ g++ -Wall test.cpp -o temp
test.cpp: In function 'int main()':
test.cpp:5: warning: right-hand operand of comma has no effect
No clue what it actually does (or tries to do)...
integral constant 0 is also a null pointer constant - it can be compared to the result of ostream
's operator void *
. Note that it'll fail if the constant has any value but 0.
The prototypes of the < operator are like :
bool T::operator <(const T& b) const;
So I guess the compiler transtype the argument as the type of this instance. Did you enabled all the warnings like -Wall