Обязательно ли ставить точку с запятой после каждого утверждения - PullRequest
0 голосов
/ 09 декабря 2018

Есть ли разница между следующими 2 кодами

    for (int i = 0; i < 3; i++)
    cout << i << endl,
    countSteps ++;

и

    for (int i = 0; i < 3; i++){
        cout << i << endl;
        countSteps ++;
    }

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Символ запятой имеет разное значение для разных синтаксических элементов.

В вашем случае это оператор запятой.

Для ясности следующее не является утверждением.

cout << i << endl,

Следующее делает.

cout << i << endl,
countSteps ++;

Как и следующее

cout << i << endl;

Точка с запятой завершает оператор.Запятая не имеет.

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

В общем, они могут иметь различное поведение в зависимости от значения, которое выражают операторы запятой.Подробнее см. https://en.cppreference.com/w/cpp/language/operator_other#Built-in_comma_operator.

0 голосов
/ 09 декабря 2018

Нет, в этом случае разницы нет.(За исключением того, что второй фрагмент не выглядит уродливым.)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...