2012年11月19日月曜日

[C++]カンマ演算子

カンマ演算子の優先順位を間違えることがあるので備忘録

カンマ演算子は一般に下記のような場合に使われる
for(int i=0, j=3; i<=3; ++i, --j)
{
 std::wcout << i << L"-" << j << std::endl;
}

出力結果

0-3
1-2
2-1
3-0

しかし、下記のような場合に注意が必要

int wmain(int argc, wchar_t* argv[]) {
 int foo, bar;
 foo =  3,4;
 bar = (3,4);
 std::wcout << foo << std::endl;
 std::wcout << bar << std::endl;
 return 0;
}

出力結果

3
4

カンマ演算子は左式から評価され、右式の評価結果を返す(bar)

fooは、「,」の方が「=」よりも優先度が低いため左式(foo=3)が先に評価され、上記の結果となる。

演算子の優先順位は下記を確認

http://en.cppreference.com/w/cpp/language/operator_precedence

0 件のコメント:

コメントを投稿