Рубрики

Запятая в C и C ++

В C и C ++ запятую (,) можно использовать в двух контекстах:

1) Запятая как оператор:
Оператор запятой (представленный токеном) является бинарным оператором, который оценивает свой первый операнд и отбрасывает результат, затем он оценивает второй операнд и возвращает это значение (и тип). Оператор запятой имеет самый низкий приоритет по сравнению с любым оператором C и действует как точка последовательности .

/ * запятая как оператор * /

int i = (5, 10); / * 10 назначено на i * /

int j = (f1(), f2()); / * Сначала вызывается (оценивается) f1 (), затем следует f2 ().

                      Возвращаемое значение f2 () присваивается j * /

2) Запятая как разделитель:
Запятая действует как разделитель при использовании с вызовами функций и определениями, такими функциями, как макросы, объявления переменных, объявления enum и аналогичные конструкции.

/ * запятая как разделитель * /

int a = 1, b = 2;

void fun(x, y);

Использование запятой в качестве разделителя не следует путать с использованием в качестве оператора. Например, в приведенном ниже утверждении, f1 () и f2 () могут быть вызваны в любом порядке.

/ * Запятая действует здесь как разделитель и не применяет никакой последовательности.

    Следовательно, либо f1 (), либо f2 () могут быть вызваны первыми * /

void fun(f1(), f2());

Посмотрите это для различий между C и C ++ при использовании оператора запятой.

Вы можете попробовать программы ниже, чтобы проверить ваше понимание запятой в C.

// ПРОГРАММА 1
#include <stdio.h>

int main()

{

    int x = 10;

    int y = 15;

  

    printf("%d", (x, y));

    getchar();

    return 0;

}

// ПРОГРАММА 2: Спасибо Шеху за предложение этой программы
#include <stdio.h>

int main()

{

    int x = 10;

    int y = (x++, ++x);

    printf("%d", y);

    getchar();

    return 0;

}

// ПРОГРАММА 3: Спасибо Venki за предложение этой программы
#include <stdio.h>

int main()

{

    int x = 10, y;

  

    // Следующее эквивалентно

    // для y = x + 2 и x + = 3,

    // с двумя печатями

    y = (x++,

         printf("x = %d\n", x),

         ++x,

         printf("x = %d\n", x),

         x++);

  

    // Обратите внимание, что последнее выражение вычисляется

    // но побочный эффект не обновляется до y

    printf("y = %d\n", y);

    printf("x = %d\n", x);

  

    return 0;

}

3) Запятая вместо точки с запятой.
Мы знаем, что в C и C ++ каждый оператор заканчивается точкой с запятой, но оператор запятой также используется для завершения оператора после выполнения следующих правил.

  • Операторы объявления переменных должны заканчиваться точкой с запятой.
  • Операторы после декларации могут быть завершены оператором запятой.
  • Последний оператор программы должен заканчиваться точкой с запятой.

Примеры:

#include <iostream>

using namespace std;

int main()

{

    cout << "First Line\n",

        cout << "Second Line\n",

        cout << "Third Line\n",

        cout << "Last line";

    return 0;

}

Выход:

First Line
Second Line
Third Line
Last line

Ссылки:
http://en.wikipedia.org/wiki/Comma_operator
http://publib.boulder.ibm.com/infocenter/comphelp/v101v121/index.jsp?topic=/com.ibm.xlcpp101.aix.doc/language_ref/co.html
http://msdn.microsoft.com/en-us/library/zs06xbxh.aspx

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Запятая в C и C ++

0.00 (0%) 0 votes