#include <stdio.h>
int main()
{
int a = 10, b = 5, c = 5;
int d;
d = b + c == a;
printf("%d", d);
}
上記のコードで、どのように機能するか説明してもらえますd = b + c == aか?
演算子の優先順位により、次のように解析されます。
d = ((b + c) == a);
b + cは 10 で、 に等しいaのでd、値 1 を受け取ります。これは、C が真の比較を表す方法です。
演算子の優先順位に基づいて、バイナリ+は よりも優先され==ます。したがって、ステートメントは次のようにグループ化されます。
d = ( b + c ) == a;
どちらになるか、
d = ( ( b + c ) == a ); // ==> d = ( 10 == 10 );
したがって、d比較に基づいて真の値を保持します。(b+c) == aこれは1、C では比較演算子が1true と0false を返すためです。
このような作品
d = (b+c) == a --> (5+5) == 10 ---> 1
1を返す
+==演算子は.Sod=b+c==a;として解析されるよりも優先されd=((b+c)==a);ます。b+cは 10
です(10==a)。so は true と評価されます。d=1;