在函数调用中,什么是运算符,什么是操作数?
In a function call, what is the operator, and what are the operands?
我正在尝试了解 C 的一些基础知识。KRC 的 The C Programming Language 说
A function call is a postfix expression, called the function designator, followed by parentheses containing a possibly empty, comma-separated list of assignment expressions (Par.A7.17),
which constitute the arguments to the function.
在函数调用中,什么是运算符,什么是操作数?
()
是运算符吗?
函数名是操作数吗?
()
内的参数是操作数吗?
- 函数指示符是函数调用的同义词吗?
谢谢。
在函数调用中,()
是一个运算符,就像 []
是访问数组元素时的运算符一样。
6.5.2 后缀运算符
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
此运算符的操作数是函数名称(或指向函数的指针)。
Are the arguments inside ()
operands?
没有。根据 C 标准,表达式列表指定函数的参数。
C 标准中的文本几乎相同,6.5.2.2:
A postfix expression followed by parentheses () containing a possibly
empty, comma-separated list of expressions is a function call. The
postfix expression denotes the called function. The list of
expressions specifies the arguments to the function.
语法为 (6.5.2):
postfix-expression ( argument-expression-listopt )
这意味着函数名是一个"postfix-expression",而( )
是实际的运算符。 C 标准没有提及此运算符的操作数,但我想您可以将函数名称称为操作数。参数列表不是操作数,而是一种特殊情况。
函数指示符的定义是(6.3.2.1):
A function designator is an expression that has function type.
表达式 func();
中的含义,func
将是函数指示符,但整个表达式将是一个函数调用。所以这不是完全相同的术语。
考虑示例 funcptr_t f = func;
,它涉及函数指示符 func
但没有函数调用。
我正在尝试了解 C 的一些基础知识。KRC 的 The C Programming Language 说
A function call is a postfix expression, called the function designator, followed by parentheses containing a possibly empty, comma-separated list of assignment expressions (Par.A7.17), which constitute the arguments to the function.
在函数调用中,什么是运算符,什么是操作数?
()
是运算符吗?函数名是操作数吗?
()
内的参数是操作数吗?- 函数指示符是函数调用的同义词吗?
谢谢。
在函数调用中,()
是一个运算符,就像 []
是访问数组元素时的运算符一样。
6.5.2 后缀运算符
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
此运算符的操作数是函数名称(或指向函数的指针)。
Are the arguments inside
()
operands?
没有。根据 C 标准,表达式列表指定函数的参数。
C 标准中的文本几乎相同,6.5.2.2:
A postfix expression followed by parentheses () containing a possibly empty, comma-separated list of expressions is a function call. The postfix expression denotes the called function. The list of expressions specifies the arguments to the function.
语法为 (6.5.2):
postfix-expression ( argument-expression-listopt )
这意味着函数名是一个"postfix-expression",而( )
是实际的运算符。 C 标准没有提及此运算符的操作数,但我想您可以将函数名称称为操作数。参数列表不是操作数,而是一种特殊情况。
函数指示符的定义是(6.3.2.1):
A function designator is an expression that has function type.
表达式 func();
中的含义,func
将是函数指示符,但整个表达式将是一个函数调用。所以这不是完全相同的术语。
考虑示例 funcptr_t f = func;
,它涉及函数指示符 func
但没有函数调用。