Tag: assignment operator

如何在printf占位符中使用等于表达式?

我有以下代码片段: main( ) { int k = 35 ; printf ( “\n%d %d %d”, k == 35, k = 50, k > 40 ) ; } 产生以下输出 0 50 0 我不确定我是否理解printf的第一个值是如何变为0 。 当k的值与35比较时,理想情况下它应该返回(并因此打印)1,但它如何打印为零? 产生的其他两个值50和0都是正确的,因为在第二个值中,k的值取50 ,而对于第三个值,k的值( 35 )与40比较。 因为35 < 40 ,所以它打印0。 任何帮助将不胜感激,谢谢。 **更新** 在研究了关于这个主题以及undefined behavior ,我在一本关于C的书中看到了这一点,最后给出了源代码。 调用约定调用约定表示在遇到函数调用时参数被传递给函数的顺序。 这里有两种可能性: 参数可能从左向右传递。 参数可能从右到左传递。 C语言遵循第二顺序。 考虑以下函数调用: fun (a, b, […]