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

C是否允许函数调用作为参数?,c,C,比如说, atoi(reverse(itoa(p))) Python允许这样做,这是一个有趣的特性,但我想知道C是否也允许这样做。是的。函数调用的参数都可以是任意表达式,包括函数调用 一般来说,很少有编程语言不支持这一点。不适合的语言通常被认为是玩具语言,不适合任何严肃的用途。:) 函数参数可以是任何有效的表达式reverse(itoa(p))是一个表达式,可以用作函数参数 C11:3.3 1参数 表达式在以逗号分隔的列表中,由函数调用表达式中的括号限定,[…] 请注意,函数调用本身就是一个表

比如说,

atoi(reverse(itoa(p)))

Python允许这样做,这是一个有趣的特性,但我想知道C是否也允许这样做。

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


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

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

C11:3.3 1参数

表达式在以逗号分隔的列表中,由函数调用表达式中的括号限定,[…]


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

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

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

tmp1 = itoa(p);
tmp2 = reverse(tmp1);
result = atoi(tmp2);
也就是说,它只是意味着每个“嵌套”函数被称为“早期”,其结果作为输入参数传递给嵌套序列中的下一个函数


C语言中内置的惰性计算支持是
?:
操作符,可以在宏中使用(从而保留其“惰性”特性)。

最好的学习方法是自己尝试,为什么不自己尝试呢?:)在解释器之外没有函数调用。Python将被调用方的返回值作为参数传递。Yes。函数参数可以是表达式。我本来打算这么做的,但我想在我尝试得到一大堆编译器错误之前,我想尽快问一下。
tmp1 = itoa(p);
tmp2 = reverse(tmp1);
result = atoi(tmp2);