Wie heißt das (…) in C und C ++?

30

Eine der Verwendungen von ...besteht darin, verschiedene Entitäten in C und C ++ zu bezeichnen.

Was ist sein Name?

Wird es auf diese Weise als Operator oder als etwas anderes klassifiziert?

Weitere Details zu ...?

Edit: Ich kenne den Zweck von .... Ich frage nach dem Namen und der Klassifizierung, von denen ich hoffe, dass sie sowohl in C als auch in C ++ ähnlich sind.

Ardent Coder
quelle
1
C-Variadic-Funktionen und C ++ - Variadic-Template-Argumente sind völlig unterschiedlich. Können Sie den Kontext angeben, in dem Sie ihn gefunden haben? (PS, C / C ++ existiert nicht, bitte wählen Sie eine aus)
JVApen
1
Ich möchte nur den Namen und die Klassifizierung wissen
Ardent Coder

Antworten:

43

Es ist einer der Interpunktionszeichen .

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

In der Funktionsdeklaration heißt es Ellipse .


Ellipsis wird auch von einigen Compiler- CSpracherweiterungen verwendet. Beispiel - Erweiterung des GCC-Schalters / Gehäusebereichs

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-

P__J__
quelle
1
Als einer der Kommentare in meiner Frage zu Parameterpaketen erwähnte, warum haben Sie ihn in Ihrer Antwort nicht erwähnt?
Ardent Coder
3
Link zum C11-Standard: port70.net/~nsz/c/c11/n1570.html#6.4.6
pmg
5
@ArdentCoder: In C ++ wird es auch bei Parameterpaketen immer noch als Auslassungspunkt bezeichnet.
Nicol Bolas
4
Ich möchte noch hinzufügen , daß ...ist nicht eine Bedienungsperson , weil sie nicht Teil eines bilden kann Ausdruck (im Sinne von ‚Ausdruck‘ , definiert durch C11 §6.5 ). Es hat mehr mit { }und ;als mit den anderen Interpunktionszeichen gemeinsam.
Zwol
1
@zwol In C ++ kann das Token ...Teil eines Ausdrucks sein. In der formalen Syntax wird es jedoch nicht als Operator betrachtet .
Aschepler
8

Das ...wird sowohl im Englischen als auch im C-Standard als Ellipse bezeichnet .

Ahmed Masud
quelle
8

Eine der Verwendungen von ... besteht darin, verschiedene Entitäten in C und C ++ zu bezeichnen. `

Ja, in Laienbegriffen ...kann man sich vorstellen, dass es mehr als ein oder mehrere (wie bei der Pseudocode-Interpunktion verwenden wir manchmal mehrere Punkte, um verschiedenen Typen zu ähneln) eines Anwendungsfalls bezeichnet, für den, wenn wir Variadics betrachten (im Sinne mehrere) von 'variierenden' Argumenten / Parametern) in C ++ würde es sich auf eine variable Anzahl von Argumenten für Funktionen oder Vorlagen beziehen.

Was ist sein Name?

Ellipse

Wird es auf diese Weise als Operator oder als etwas anderes klassifiziert?

Nein, es ist definitiv kein Operator , wie es Ihnen erlaubt passieren beliebige Anzahl von Argumenten, nicht arbeiten auf ihnen.

Weitere Details zu ...?

Soweit ich weiss -

  1. Es ist ein spezieller Spezifizierer;
  2. Die Auslassungspunkte stehen in der Argumentliste immer an letzter Stelle.
  3. Die Verwendung wird nur verwendet, wenn Sie die Begrenzung der Anzahl der Parameter für eine Vorlage / Funktion aufheben möchten oder wenn Sie eine erweiterbare Anzahl von Parametern für die Erweiterung benötigen. (dh es bietet eine Parameterpaketerweiterung in einer variablen Klassenvorlage oder Funktionsvorlage.) In der Praxis benötigen wir meistens einen festen Satz bekannter Parameter, sodass dies in den meisten Fällen nicht anwendbar ist.
  4. Es kann mit dem sizeofBediener verwendet werden, da es auch als Pack-Erweiterung klassifiziert ist.

Bearbeiten: Ich kenne den Zweck, nach dem ...ich nach dem Namen und der Klassifizierung frage, von denen ich hoffe, dass sie sowohl in C als auch in C ++ ähnlich sind.

Der Name ist derselbe, die Verwendung kann jedoch für C ++ und C variieren.

Bin nur mit seiner Verwendung in der früheren Sprache vertraut. (Ich erinnere mich an ein HackerRank-Problem bei Variadics , das dessen Nützlichkeit abdeckt.)

Anirban166
quelle
3

Die Folge von drei Punkten wird sowohl in C als auch in C ++ ...als Ellipse bezeichnet


In C ++ hilft die Ellipse beim Initialisieren und Erweitern verschiedener Arten von Paketen .

  • A parameter pack- wenn zwischen dem Typ und dem Bezeichner eine Ellipse steht
    Type ... identifier

  • A pack expansion- besteht aus einem Muster und einer Ellipse
    pattern...

Andreas DM
quelle