カンマ演算子の優先順位を間違えることがあるので備忘録
カンマ演算子は一般に下記のような場合に使われる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 件のコメント:
コメントを投稿