繁体   English   中英

C 和 C++ 中的 (...) 是什么?

[英]What is the (...) called in C and C++?

...的用途之一是在 C 和 C++ 中表示可变参数实体。

它叫什么名字?

以这种方式使用时,它是否归类为运算符或其他东西?

关于...任何其他细节?

编辑:我知道...的目的。 我问的是它的名称和分类,我希望它在 C 和 C++ 中都相似。

它是标点符号之一

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

在函数声明中,它被称为省略号


省略号也被一些编译器C语言扩展使用。 示例 - gcc switch/case 范围扩展

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-

...在英语和 C 标准中都称为省略号

... 的用途之一是在 C 和 C++ 中表示可变参数实体。`

是的,用外行人的话来说...可以被认为是表示一个用例的多个(如在伪代码标点符号中,我们有时使用多个点来模拟不同类型),如果我们考虑可变参数(多个在 C++ 中“可变”参数/参数的意义上),它指的是函数或模板的可变数量的参数。

它叫什么名字?

省略

以这种方式使用时,它是否归类为运算符或其他东西?

不,它绝对不是运算符,因为它允许您传递任意数量的参数,而不是对它们进行操作

关于……的任何其他细节?

据我所知 -

  1. 它是一个特殊的说明符;
  2. 省略号总是出现在参数列表的最后;
  3. 就其用法而言,它仅在您想要取消模板/函数的参数数量限制或需要具有可扩展的参数数量进行扩展时使用。 (即它在可变参数类模板或函数模板中提供参数包扩展)实际上我们大多需要一组固定的已知参数,因此不适用于大多数情况;
  4. 它可以与sizeof运算符一起使用,因为它也被归类为包扩展。

编辑:我知道...我在询问它的名称和分类,我希望它在 C 和 C++ 中都相似。

名称相同,但 C++ 和 C 的用法可能有所不同。

我只熟悉它在前一种语言中的使用。 (我记得有上Variadics一个HackerRank问题,涵盖了其效用。)

三个句号的序列...在 C 和 C++ 中都称为省略号


在 C++ 中,省略号有助于初始化和扩展不同种类的

  • parameter pack - 当类型标识符之间有省略号
    Type ... identifier

  • pack expansion - 由模式和省略号组成
    pattern...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM