我被困在 C 程序的这个练习中,在 C for 循环中有一个逗号,如果,我替换 ,
与 &&
它的工作原理相同
for(i = 5, j = i - 1 ; i > 0 , j > 0 ; --i ,j = i - 1)
printf("\n%d",i);
在这个循环中,我得到了如何 for( i = 5,j = i - 1 ; ? ; --i ,j= i - 1)
但是?
的部分有没有我不明白它是如何工作的 1,1 = true ? 1,0 = 假? C 是一种技巧,这就是为什么喜欢它 3> 你能解释我这部分是如何工作的吗
最佳答案
but the part where ? is there i don't get how that is working
comma operator in C 计算逗号前的表达式,然后计算逗号后的表达式,然后返回逗号后表达式的值。所以表达式的值
1, 0
在 C 中是 0
. 1, 1
的结果是 1
. foo(x), bar(x)
的结果是 bar(x)
的值.这并不经常出现,因为在实践中,逗号运算符并不经常使用。它在少数情况下会很方便,例如
for
或 while
您可能希望每次通过循环操作多个变量的循环。但一般来说,将表达式与逗号运算符结合只会产生关于如何评估这些表达式、整个表达式的结果是什么等方面的不确定性。只要可能,将表达式分开并一次执行一个。Why my for loop works with "&&" and not with ","
&&
运算符组合(使用逻辑与)两个表达式的结果而不是丢弃第一个表达式的结果,因此根据表达式,您可以获得与 ,
不同的结果。 . 1 ? 0
和 1 ? 1
对 ,
给出相同的结果和 &&
因为&&
的结果在这两种情况下都取决于第二个表达式。但是0 ? 0
和 0 ? 1
会给出不同的结果 — ,
再次返回第二个表达式的值,&&
返回 0
因为这两个表达式都被考虑并且 0 AND anything
是 0。
关于c - 为什么我的 for 循环适用于 "&&"而不适用于 ",",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66605419/