C와 C ++에서 (…)는 무엇입니까?


30

의 사용 중 하나는 C 및 C ++에서 가변 요소 ...를 나타내는 것 입니다.

그건 뭐예요?

그런 식으로 사용될 때 연산자 또는 다른 것으로 분류됩니까?

다른 자세한 내용은 ...?

편집 : 의 목적을 알고 ...있습니다. 이름과 분류에 대해 묻고 싶습니다 .C와 C ++ 모두 비슷합니다.



1
C variadic 함수와 C ++ variadic 템플릿 인수는 완전히 다릅니다. 찾은 컨텍스트를 제공 할 수 있습니까? (PS, C / C ++는 존재하지 않습니다. 하나를 선택하십시오)
JVApen

1
난 그냥 그 이름과 분류를 알고 싶어
Ardent Coder

답변:


43

구두점 중 하나입니다 .

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

함수 선언에서는 줄임표 라고합니다 .


생략 부호는 일부 컴파일러 C언어 확장 에서도 사용됩니다 . 예-gcc 스위치 / 케이스 범위 확장

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-


1
그러나 내 질문에 대한 의견 중 하나가 매개 변수 팩에 대해 언급 한 것처럼 왜 답변에 언급하지 않았습니까?
열렬한 코더

3
pmg

5
@ArdentCoder : C ++에서는 매개 변수 팩의 경우에도 줄임표라고합니다.
Nicol Bolas

4
나는 그것이 표현식의 일부를 형성 할 수 없기 때문에 연산자 ...아니라고 덧붙일 것 입니다 ( C11 §6.5에 의해 정의 된 '표현'의 의미에서 ). 그것은 더 많은 공통점이있다 및 다른 사항 부호보다 있습니다. { };
zwol

1
@zwol C ++에서 토큰 ...은 표현식의 일부가 될 수 있습니다. 그러나 공식 구문 에서는 연산자 로 간주되지 않습니다 .
aschepler


8

...의 용도 중 하나는 C 및 C ++에서 가변 요소를 나타내는 것입니다 .`

그렇습니다. 평신도의 용어 ...에서 의사 코드 문장 부호에서와 같이 여러 유형을 나타내는 것으로 생각할 수 있습니다. C ++에서 '가변'인수 / 매개 변수)의 경우 함수 또는 템플릿의 가변 개수의 인수를 나타냅니다.

그건 뭐예요?

생략

그런 식으로 사용될 때 연산자 또는 다른 것으로 분류됩니까?

당신이 할 수 있습니다으로 아니, 확실히 조작이 아니다 통과 인수의 수를하지 운영 그들.

...에 관한 다른 세부 사항?

내가 아는 한 -

  1. 특별한 지정자입니다.
  2. 줄임표는 항상 인수 목록에서 마지막에옵니다.
  3. 사용법과 관련하여 템플릿 / 함수의 매개 변수 수에 대한 제한을 제거하려는 경우 또는 확장을 위해 확장 가능한 매개 변수 수가 필요한 경우에만 사용됩니다. (즉, 가변 클래스 템플릿 또는 함수 템플릿에서 파라미터 팩 확장을 제공합니다.) 실제로는 알려진 고정 파라미터 세트가 대부분 필요하므로 대부분의 경우 적용 할 수 없습니다.
  4. sizeof팩 확장으로 분류되므로 운영자 와 함께 사용할 수 있습니다 .

편집 : 나는 ...그 이름과 분류에 대해 묻는 목적이 C와 C ++에서 비슷하다는 것을 알고 있습니다.

이름은 동일하지만 C ++ 및 C에 따라 사용법이 다를 수 있습니다.

이전 언어에서의 사용법에만 익숙합니다. (나는에 HackerRank 문제를 가진 기억 Variadics을 자사의 유틸리티를 포함하는,.)


3

C와 C ++ 모두에서 3 개의 완전 정지 시퀀스를 줄임표... 라고합니다.


C ++에서 줄임표는 다른 종류의 팩을 초기화하고 확장하는 데 도움이 됩니다 .

  • A- 타입식별자 사이에 줄임표parameter pack 가있을 때
    Type ... identifier

  • A- pack expansion패턴과 줄임표로 구성
    pattern...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.