什么是输出? C编程

时间:2013-06-23 15:49:47

标签: c coding-style logic

刚刚提出了一个我忽略的基本编程问题。

int a = 2, b = 3, c = 5;

if (!a == b)
    c = a--;
else
    c = ++b;

printf("%d %d %d\n", a, b, c);

我认为输出应该是2 4 4。 任何人都可以帮助验证我是对还是错?为什么?

2 个答案:

答案 0 :(得分:1)

你是对的:!a给你00 == b0

因此,c = ++b提供b = 4c = 4a未更改。

答案 1 :(得分:0)

由于!的优先级高于==if的条件将为false ((!a) == b) -> (0 == 3)。所以else将被执行,而b和c都将被设置为4.你是对的。