无法理解为什么会产生这样的输出

时间:2014-02-23 03:09:18

标签: c math operators

main()
{
    int a = 10, b = 5, c = 5;
    int d;
    d = a == (b + c);
    printf("%d", d);
}

输出:1

任何人都可以解释这个值如何分配给d ??

3 个答案:

答案 0 :(得分:2)

a == (b + c)为真,true由编译器中的1表示,这就是d变为1的原因。

如果b + c的总和不等于10则会打印0

C false中的Remmeber由0表示,任何其他值表示为true。

因此

if(-1)
{
    printf("true");
}

打印true

答案 1 :(得分:2)

==的优先级高于=,所以

d = a == (b + c);

相当于:

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

它测试a是否等于b + c1如果为真,0如果为真。

答案 2 :(得分:1)

==如果其操作数相等则返回1,如果不相等则返回0。