質問: ※ヘッダの宣言などは省略します。 C言語において、 ``` int main() { int a=0,b=2,c=3; if((a=b+c)==5) cout << a << '\n'; if(a=b+c==5) cout << a << '\n'; } ``` というプログラムの実行結果が 5 1 でした 一つ目の条件式でのaにb+cが代入されそのaが5と比較される、 というのはわかるのですが 二つ目の条件式ではなにがどうなって1が出力されたのかわかりません。 どのような演算が行われたか教えてください。
回答: こんにちは。 演算子の優先順位を考えると良いです。 優先順位の高い順に、`+` → `==` → `=`です。 これに従って括弧を付けると、 `a=((b+c)==5)` なので、 `a=((2+3)==5)` `a=(5==5)` `a=true` `a=1` なお、bool型をint型へ変換する時、trueは1、falseは0になります。