Как (...) называется в C и C ++? - PullRequest
30 голосов
/ 11 января 2020

Одно из употреблений ... - это обозначение variadi c сущностей в C и C ++.

Как его зовут?

классифицируется как оператор или что-то еще, когда используется таким образом?

Любые другие детали, касающиеся ...?

Редактировать: Я знаю цель ... , Я спрашиваю о его названии и классификации, которые, я надеюсь, похожи как в C, так и в C ++.

Ответы [ 4 ]

43 голосов
/ 11 января 2020

Это один из знаков препинания .

6.4.6  Punctuators
Syntax punctuator:
     one of  [    ]    (    )    {   }    .    ->
             ++   --   &    *    +   -    ~    !
             /    %    <<   >>   <   >    <=   >=    ==   !=   ^   |   &&   ||
             ?    :    ;    ...
             =    *=   /=   %=   +=  -=   <<=  >>=   &=   ^=   |=
             ,    #    ##
             <:   :>   <%   %>   %:   %:%:

В объявлении функции он называется многоточие .


Многоточие также используется некоторыми расширениями языка C компилятора. Пример - g cc переключатель / расширение диапазона корпуса

const char *test(unsigned num)
{
    switch(num)
    {
        case 0 ... 9:
            return "the value is in the 0 to 9 range";
        case 10 ... 99:
            return "the value is in the 10 to 99 range";
        default:
            return "out of tested range";
    }
}

https://godbolt.org/z/YBLma-

8 голосов
/ 12 января 2020

Одним из вариантов использования ... является обозначение переменных c сущностей в C и C ++. `

Да, с точки зрения непрофессионала ... можно считать как обозначение более чем одного или кратных (как в пунктуации псевдокода мы иногда используем несколько точек для напоминания разных типов) варианта использования, для которого, если мы рассмотрим вариады (множественные в смысле «меняющихся» аргументов / параметров) в C ++ это будет относиться к переменному числу аргументов для функций или шаблонов.

Какое у него имя?

Многоточие

Это классифицируется как оператор или что-то еще, когда используется таким образом?

Нет, это определенно не оператор, поскольку он позволяет передать любое количество аргументов, а не оперировать с ними.

Любые другие детали, касающиеся ...?

Насколько Я знаю -

  1. Это специальный спецификатор;
  2. Многоточие всегда идет последним в т список аргументов;
  3. Что касается его использования, он используется только тогда, когда вы хотите снять ограничения на количество параметров для шаблона / функции или когда вам требуется иметь расширяемое число параметров для расширение. (т. е. он обеспечивает расширение пакета параметров в шаблоне класса c или шаблона функции variadi). На практике нам в основном требуется фиксированный набор известных параметров, поэтому он не применим в большинстве случаев;
  4. Это может быть используется с оператором sizeof, поскольку он также классифицируется как расширение пакета.

Редактировать: Я знаю цель ... Я спрашиваю о его Название и классификация, которые, я надеюсь, похожи как в C, так и в C ++.

Имя одинаковое, но использование может различаться для C ++ и C.

Я знаком только с его использованием на прежнем языке. (Я помню проблему с HackerRank на Variadics , охватывающую его полезность.)

8 голосов
/ 11 января 2020

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

3 голосов
/ 12 января 2020

Последовательность из трех полных остановок ... называется многоточием как в C, так и в C ++


В C ++ многоточие помогает инициализировать и расширять различные виды пачек .
  • A parameter pack - при наличии многоточие между типами и идентификатор
    Type ... identifier

  • A pack expansion - состоит из шаблона и многоточия
    pattern...

...