Comma Operator в состоянии цикла в C

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

Я просто хочу объяснить «i <0,5» в условии цикла for.

Даже если я сделаю это «i> 0,5», мы получим тот же результат.

Может ли кто-нибудь осмыслить меня, как это работает. (Условия с запятой, я уже искал http://en.wikipedia.org/wiki/Comma_operator, но никакой помощи вообще)

    Оператор Comma вычисляет i<0 или i>0 и игнорирует. Следовательно, это всегда 5 которые присутствуют в состоянии.

    Таким образом, это эквивалентно:

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

    По теме

    Оператор запятой всегда будет давать последнее значение в списке, разделенном запятыми.

    В основном это двоичный оператор, который оценивает значение левой руки, но отбрасывает его, затем оценивает значение правой руки и возвращает его.

    Если вы цепью несколько из них, они в конечном итоге будут давать последнее значение в цепочке.

    Согласно комментарию anatolyg, это полезно, если вы хотите оценить значение левой руки перед правым значением (если левая оценка имеет желательный побочный эффект).

    Например, i < (x++, x/2) будет разумным способом использовать этот оператор, потому что вы влияете на значение правой руки с учетом оценки стоимости левой руки.

    http://en.wikipedia.org/wiki/Comma_operator

    Sidenote: Вы когда-нибудь слышали об этом любопытном операторе?

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

    Это просто еще один способ написать x-- > 0 .

    i<0,5 всегда будет оцениваться до 5 , как всегда правильное выражение будет возвращено для ex1,ex2 .

    Оператор coma выполняется с инициализацией и частью приращения, чтобы сделать что-то вроде for(i=0,j=20;i , если вы сделаете это в части сравнения, которую он будет оценивать последний (как уже было сказано ранее)

    Оператор запятой предназначен для случаев, когда первый операнд имеет некоторые побочные эффекты. Это просто идиома, предназначенная для того, чтобы сделать ваш код более удобочитаемым. Это не влияет на оценку условного.

    Например,

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

    будет увеличивать i , а затем проверить, если i<5 .