c - C是否允许函数调用作为参数?

c - C是否允许函数调用作为参数?,第1张

例如,

atoi(reverse(itoa(p)))

Python允许这个,它是一个有趣的功能,但我想知道C是否也允许它。

最佳答案:

3 个答案:

答案 0 :(得分:2)

是。函数调用的参数都可以是任意表达式,包括函数调用。

一般来说,很少有编程语言不支持这种语言。那些没有的通常被认为是玩具语言,不适合任何严肃的用途。 :)

答案 1 :(得分:1)

函数参数可以是任何有效的表达式。 reverse(itoa(p))是一个表达式,可以用作函数参数。

C11:3.3

1 参数

  逗号分隔列表中的

表达式,由函数调用表达式中的括号限定,[...]

请注意,函数本身就是一个表达式。

答案 2 :(得分:1)

这取决于“函数调用作为参数”的含义。 C语言没有提供任何内置的方法来支持延迟评估(如果你的问题是关于那个)。你的

atoi(reverse(itoa(p)))

表达式在C中有效,但它只代表

tmp1 = itoa(p);
tmp2 = reverse(tmp1);
result = atoi(tmp2);

即。它只是意味着每个“嵌套”函数都被称为“早期”,其结果作为输入参数传递给嵌套序列中的下一个函数。

你可以在C语言中获得对延迟评估的内置支持的壁橱是?:运算符,它可以在宏中使用(从而保留其“懒惰”性质)。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复