C 在函数调用中,什么是运算符,什么是操作数?

C 在函数调用中,什么是运算符,什么是操作数?,c,language-lawyer,kernighan-and-ritchie,function-call-operator,C,Language Lawyer,Kernighan And Ritchie,Function Call Operator,我试图理解C语言的一些基础知识 函数调用是一个后缀表达式,称为函数指示符,后跟括号,括号中可能包含空的、逗号分隔的赋值表达式列表(第A7.17段), 构成函数的参数 在函数调用中,什么是运算符,什么是操作数 ()是操作员吗 函数名是操作数吗 参数是否在操作数中 函数指示符是函数调用的同义词吗 谢谢。在函数调用中,()是运算符,就像访问数组元素时,[]是运算符一样 6.5.2后缀运算符 此运算符的操作数是函数名(或指向函数的指针) 参数是否在操作数中 否。根据C标准,表达式列表指定函数的参数。C标

我试图理解C语言的一些基础知识

函数调用是一个后缀表达式,称为函数指示符,后跟括号,括号中可能包含空的、逗号分隔的赋值表达式列表(第A7.17段), 构成函数的参数

  • 在函数调用中,什么是运算符,什么是操作数

    ()
    是操作员吗

    函数名是操作数吗

    参数是否在操作数中

  • 函数指示符是函数调用的同义词吗
  • 谢谢。

    在函数调用中,
    ()
    是运算符,就像访问数组元素时,
    []
    是运算符一样

    6.5.2后缀运算符

    此运算符的操作数是函数名(或指向函数的指针)

    参数是否在操作数中


    否。根据C标准,表达式列表指定函数的参数。

    C标准中的文本几乎相同,6.5.2.2:

    后跟括号()的后缀表达式,其中可能包含 空的、逗号分隔的表达式列表是一个函数调用。这个 后缀表达式表示被调用的函数。名单 表达式指定函数的参数

    语法为(6.5.2):

    这意味着函数名是一个“后缀表达式”,而
    ()
    是实际的运算符。C标准没有提到这个操作符的操作数,但我想你可以把函数名称为操作数。参数列表不是操作数,而是一种特殊情况


    功能指示器的定义为(6.3.2.1):

    函数指示符是具有函数类型的表达式

    表达式
    func()中的含义
    func
    将是函数指示符,但整个表达式将是函数调用。所以它不是完全相同的术语


    考虑示例
    funcptr\u t f=func
    包含函数指示符
    func
    但没有函数调用。

    函数调用在黄色框中定义,显然不是函数指示符,它是函数名。顺便说一句,知道这些东西对任何不编写编译器的人来说都是毫无用处的。我想你可以把函数名称为操作数。这不是常见的做法:函数调用上下文中的“操作数”一词通常指定参数列表中的每个表达式,即参数的同义词。C标准对此不使用操作数,也不使用宏参数或参数,但其他编程语言(如Python)的规范使用操作数。@chqrlie因此出现了“我想”:)我确实强调,在这种情况下,标准没有提到任何操作数。注§6.5.2.2?1说:表示被调用函数的表达式(92)应具有类型指针,指向返回void或返回数组类型以外的完整对象类型的函数。脚注92说:通常,这是转换作为函数指示符的标识符的结果。§6.3.2.1继续:除非它是sizeof运算符(65)或一元&运算符的操作数,否则类型为“函数返回类型”的函数指示符将转换为类型为“指向函数返回类型的指针”的表达式“@JonathanLeffler:毫无疑问,函数指示符可以用作某些运算符的操作数,这并不意味着它是函数调用运算符的操作数,函数调用运算符也不是这样指定的。形式语法定义绝对是初学者最需要的:)操作数本质上是参数的同义词@彼得,也许吧,但OP有23K的代表,几乎不是初学者。
    Syntax
    1 postfix-expression:
    primary-expression
    postfix-expression [ expression ]
    postfix-expression ( argument-expression-listopt )
    postfix-expression . identifier
    postfix-expression -> identifier
    postfix-expression ++
    postfix-expression --
    ( type-name ) { initializer-list }
    ( type-name ) { initializer-list , }
    
    argument-expression-list:
    assignment-expression
    argument-expression-list , assignment-expression  
    
    postfix-expression ( argument-expression-listopt )