0
#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か?

4

4 に答える 4

6

演算子の優先順位により、次のように解析されます。

d = ((b + c) == a);

b + cは 10 で、 に等しいaのでd、値 1 を受け取ります。これは、C が真の比較を表す方法です。

于 2013-06-25T10:10:21.003 に答える
4

演算子の優先順位に基づいて、バイナリ+は よりも優先され==ます。したがって、ステートメントは次のようにグループ化されます。

d = ( b + c ) == a;

どちらになるか、

d = ( ( b + c ) == a );    // ==>  d = ( 10 == 10 );

したがって、d比較に基づいて真の値を保持します。(b+c) == aこれは1、C では比較演算子が1true と0false を返すためです。

于 2013-06-25T10:09:28.167 に答える
2

このような作品

d = (b+c) == a --> (5+5) == 10 ---> 1 

1を返す

于 2013-06-25T10:12:29.377 に答える
2

+==演算子は.Sod=b+c==a;として解析されるよりも優先されd=((b+c)==a);ます。b+cは 10
です(10==a)。so は true と評価されます。d=1;

于 2013-06-25T10:14:49.527 に答える