Why can I write:
bool a = sizeof(unsigned int) == sizeof(int);
cout << "(taille unsigned integer = integer) ? " << a;
But this:
cout << "(taille unsigned integer = integer) ? " << sizeof(unsigned int) == sizeof(int);
produces a compilation error?
Invalid operands to binary expression ('std::basic_ostream<char>::__ostream_type' (aka 'basic_ostream<char, std::char_traits<char>>') and 'unsigned long')
>Solution :
This is an issue of operator precedence. The << operator has higher prcedence than ==, so your expression is parsed as
(cout << "(taille unsigned integer = integer) ? " << sizeof(unsigned int)) == (sizeof(int))
Since the ostream << operator overloads return the ostream they’re called on, you’re trying to compare a std::ostream to an int, and there is no such comparison.