#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 では比較演算子が1
true と0
false を返すためです。
このような作品
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;