我不知道我们如何得到以下程序的输出 0 5 0


main()
{
int k=35;
printf("%d %d %d",k==35,k=50,k>40);
}

这段代码的输出是0 50和0,我不明白为什么?因为我已经了解到赋值运算符的优先级最低,而相关运算符的优先级更高,所以请解释一下这种输出是如何产生的?

没有C标准定义的固定顺序。编译器可以选择从左到右或从右到左进行求值。因此,在您的情况下,编译器从右到左对表达式求值。正如您所知,==将输出生成为布尔值。因此,编译器所做的第一个评估是35>40,它是False(0(,而k=50,所以简单地进行赋值,最后,将k(50(5进行比较,结果是False(0,

因此,您的输出为0 50 0。

我希望它能消除你的疑虑。。

最新更新