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

时间:2017-09-22 16:09:39

标签: c

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

这可能在C?

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

2 个答案:

答案 0 :(得分:5)

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

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

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等。)

答案 1 :(得分:1)

#include<stdio.h>

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;
            }