为什么d的值为1而不是6?

0 c equality

#include <stdio.h>
    int main()
    {
        int a = 10, b = 5, c = 5;
        int d;
        d = b + c==a;
        printf("%d", d);
    }
Run Code Online (Sandbox Code Playgroud)

我想c==a将计算为1b+1,即5+1=6会输出却是1,如果我改变+,以*输出为0。为什么?

Bla*_*aze 5

这是运算符优先级的情况。+具有比更高的优先级==,因此

b + c==a;
Run Code Online (Sandbox Code Playgroud)

是相同的

(b + c) == a;
Run Code Online (Sandbox Code Playgroud)

所以变成

10 == 10;
Run Code Online (Sandbox Code Playgroud)

哪个是1


如果我将+更改为*,则输出为0

然后我们有(5 * 5) == 10哪个是25 == 10哪个0