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

この質問は、CとC++の違いとは何の関係もありません。これは、演算子の優先順位と、式の境界がどこにあるかを決定することについてです。正しい例は次のようになります。

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

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

C ++ I/Oが<<変数の出力に使用することを推奨しているという事実は重要ではありません。C ++によると、オーバーロードされたopsの優先順位は、通常の演算子の優先順位と同じです。

于 2012-07-19T08:37:19.343 に答える
1

あなたのセリフは次のように説明されます:

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

そのはず:

cout << (33&7) << endl;
于 2012-07-19T09:42:33.223 に答える