C语言中循环条件下的逗号运算符

#include main() { int i; for(i=0;i<0,5;i++) printf("%d\n",i); } 

我只想在for循环的条件下解释“i <0,5”。

即使我把它设为“i> 0,5”,我们也得到相同的输出。

有人可以解释一下这种情况是如何起作用的。 (使用逗号运算符的条件,我已经搜索了http://en.wikipedia.org/wiki/Comma_o​​perator但根本没有帮助)

逗号运算符计算i<0i>0并忽略。 因此,它始终是条件中存在的5

所以它相当于:

 for(i=0;5;i++) 

关于主题

逗号运算符将始终生成逗号分隔列表中的最后一个值。

基本上它是一个二元运算符,它评估左手值但丢弃它,然后计算右手值并返回它。

如果链接其中的多个,它们最终会产生链中的最后一个值。

根据anatolyg的评论,如果您想在右手值之前评估左手值(如果左手评估具有理想的副作用),这将非常有用。

例如, i < (x++, x/2)将是一种使用该运算符的理智方式,因为您正在影响右手值以及左手值评估的影响。

http://en.wikipedia.org/wiki/Comma_o​​perator

旁注:你听说过这个好奇的操作员吗?

 int x = 100; while(x --> 0) { // do stuff with x } 

这只是写x-- > 0另一种方式。

i<0,5将始终评估为5 ,因为ex1,ex2将返回正确的表达式。

昏迷操作符完成初始化和增量部分,做类似的事情for(i=0,j=20;i ,如果你在比较部分做它将评估最后一个(因为之前已经回答过)

逗号运算符适用于第一个操作数有一些副作用的情况。 它只是一个成语,旨在使您的代码更具可读性。 它对条件的评估没有影响。

例如,

 for (i = 0; i<(i++, 5); i++) { // something } 

将增加i ,然后检查i<5