例如,
atoi(reverse(itoa(p)))
Python允许这个,它是一个有趣的功能,但我想知道C是否也允许它。
答案 0 :(得分:2)
是。函数调用的参数都可以是任意表达式,包括函数调用。
一般来说,很少有编程语言不支持这种语言。那些没有的通常被认为是玩具语言,不适合任何严肃的用途。 :)
答案 1 :(得分:1)
函数参数可以是任何有效的表达式。 reverse(itoa(p))
是一个表达式,可以用作函数参数。
1 参数
逗号分隔列表中的表达式,由函数调用表达式中的括号限定,[...]
请注意,函数本身就是一个表达式。
答案 2 :(得分:1)
这取决于“函数调用作为参数”的含义。 C语言没有提供任何内置的方法来支持延迟评估(如果你的问题是关于那个)。你的
atoi(reverse(itoa(p)))
表达式在C中有效,但它只代表
tmp1 = itoa(p);
tmp2 = reverse(tmp1);
result = atoi(tmp2);
即。它只是意味着每个“嵌套”函数都被称为“早期”,其结果作为输入参数传递给嵌套序列中的下一个函数。
你可以在C语言中获得对延迟评估的内置支持的壁橱是?:
运算符,它可以在宏中使用(从而保留其“懒惰”性质)。