Tag: equality

如何在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, […]

在while循环中使用scanf

这个非常简单的问题可能是一个非常简单的答案: 我正在阅读Pratta的“C Primer Plus”,他一直在使用这个例子 while (scanf(“%d”, &num) == 1)… == 1真的有必要吗? 似乎有人可以写: while (scanf(“%d”, &num)) 似乎相等测试是不必要的,因为scanf返回读取的对象数,1将使while循环成为真。 是确保读取的元素数量正好为1还是完全多余的原因?