我们可以在printf()中调用一个函数吗?

printf("%d",func(i)); 

这可能在C?

让我们认为func(i)是单独的函数,我们可以在printfscanf调用它吗?

是。 虽然它在某些方面比较特殊,但printf只是另一个function。 函数调用可以是表达式的一部分。 你传递给函数的参数本身就是表达式。

表达式是您可以计算的任何内容。 所以

 i + 1 

是一种表达方式。 但很简单

 i 

也是一个(更简单)的表达。 而且很简单

 1 

是一个更简单的表达。

我们用更小的表达来构建大表达。 因此,如果expr1是表达式而expr2是另一个表达式,那么

 expr1 + expr2 

是一个更大的表达,结合了它们。

正如您可以使用两个小表达式(有时我们称之为“子表达式”)并使用+运算符组合它们以形成更大的表达式,我们也可以通过调用函数来获取一些表达式并将它们组合在一起:

 f(expr1, expr2) 

现在,回到你的问题,电话

 func(i) 

是一种表达方式。 但是当你调用printf ,它希望看到的参数是什么

 printf(expression, expression, expression, ...) 

现在,在printf's情况下,第一个表达式必须是一个字符串,它实际上总是一个常量字符串。 但剩下的参数可以是任何东西: 1ii + 1func(1) ,或几乎任何东西:

 printf("%d %d %d %d %d\n", 1, i, i+1, func(i), i+1+func(i)); 

当然,唯一需要担心的是,你在第一个参数中有%符号(即格式字符串)中有多少个表达式作为附加参数,并且这些附加参数的类型必须与类型匹配由您使用的特定格式说明符( %d%f%s等)预期。

 #include int sum(int ,int ); void main() { int num1,num2; printf("Enter two numbers: "); scanf("%d %d",&num1,&num2); printf("Sum of %d and %d is: %d",num1,num2,sum(num1,num2)); //function call in print statement } int sum(int num1,int num2) //function to add two numbers`` { int result; result=num1+num2; return result; }