Подтвердить что ты не робот

Оператор запятой в условии цикла в C

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

Я не могу понять, i<0,5 часть в состоянии цикла for.

Даже если я сделаю это, i>0,5, нет никаких изменений в выходе.

Как это работает?

4b9b3361

Ответ 1

Оператор-запятая оценивает i<0 Или i>0 и игнорирует. Следовательно, всегда существует 5, присутствующее в условии.

Итак, это эквивалентно:

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

Ответ 2

В теме

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

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

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

В соответствии с комментарием 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.

Ответ 3

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

Ответ 4

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

Ответ 5

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

Например,

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

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