tags:

views:

51

answers:

2

What is the problem with the last two statements in the code?

#include <iostream>
using namespace std;
int main()
{
cout << "2 + 4 = " << 2 + 4 << endl;
cout << "2 * 4 = " << 2 * 4 << endl;
cout << "2 | 4 = " << 2 | 4 << endl;
cout << "2 & 4 = " << 2 & 4 << endl;

What should I do to fix this?

+3  A: 

Put the expression in parentheses. The << operator is taking precedence over the bitwise operators.

#include <iostream>
using namespace std;
int main()
{
  cout << "2 + 4 = " << 2 + 4 << endl;
  cout << "2 * 4 = " << 2 * 4 << endl;
  cout << "2 | 4 = " << (2 | 4) << endl;
  cout << "2 & 4 = " << (2 & 4) << endl;
  return 0;
}
Brian R. Bondy
+9  A: 

What is the problem with the last two statements in the code?

Operator precedence. | and & have lower precedence than <<, so cout << "2 & 4 = " << 2 & 4 << endl; gets parsed as (cout << "2 & 4 = " << 2) & (4 << endl;).

What should I do to fix this?

Put parens around 2 | 4 and 2 & 4.

sepp2k