4

以下代码在 C 中运行良好,但是当我尝试用 c++ 编写时,程序无法运行。请解释一下。

C代码:

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int a = 33,b = 7;
    printf("%d\n",a&b);
    return 0;
}

C++ 代码:

#include<iostream>

using namespace std;

int main()
{
    int a = 33,b = 7;
    cout << 33&7 << endl;
    return 0;
}
4

3 回答 3

32

注意您的运算符优先级:

cout << (33 & 7) << endl;

&的优先级低于<<。所以你需要使用().


有关 C 和 C++ 中运算符优先级的完整列表:

http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence

于 2012-07-19T08:05:50.717 回答
1

您的台词将被解释为:

(cout <<33)&(7<<endl);

它应该是:

cout << (33&7) << endl;
于 2012-07-19T09:42:33.223 回答
1

这个问题与C和C++之间的区别无关。这是关于运算符的优先级和决定表达式边界的位置。正确的示例应如下所示:

printf("%d\n", a&b);

short cout;
int endl;
long var = cout << 33 & 7 << endl;

事实上,C++ I/O 建议<<用于打印变量并不重要。C++ 表示重载操作的优先级与常规运算符的优先级相同。

于 2012-07-19T08:37:19.343 回答