从printf调用另一个函数?

时间:2015-01-28 10:41:54

标签: c

我正在从一本关于C / Objective-C的书中做一个简单的挑战,我必须编写一个程序来计算和显示整数的平方,同时也将数字放在引号中。

我制作了一个成功运作的程序,但我有两个问题。 首先考虑到减少代码量的想法,在我的代码中练习高效和简洁,我从我的squareOfInteger语句中调用了printf函数。这是否可取?它有用,但我担心这可能是不好的做法?

另一件事是我在变量int之前是否需要在我的函数参数中重复类型为number,或者是否足以声明结果为int类型,并在参数中省略了类型,我在下面做了。

这是我的代码:

#include <stdio.h>

int squareOfInteger(number)
{
    int square = number * number;
    return square;



}

int main(int argc, const char * argv[]) {
    int myNumber = 5;
    printf("\"%d\" squared is \"%d\".\n", myNumber, squareOfInteger(myNumber));
    return 0;
}

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:5)

  

我从printf语句中调用了squareOfInteger函数。这是   虽然可取吗?虽然有效,但我担心这可能会很糟糕   练?

printf()调用函数也不错。但是可能会出现导致未定义行为的情况,因为未指定printf()内的评估顺序。例如:

int func(int *p)
{
   *p =30;
}
int main()
{
   printf("%d %d",num,func(&num));
   return 0;
}

您在此处拨打func()并打印num的值,以便拥有UB。

  

是否足以将结果声明为int类型,并且   在参数

中省略类型

如果未指定参数的类型,则默认为int。但是提及参数的类型总是很好。

答案 1 :(得分:2)

  

“我从我的printf语句中调用了squareOfInteger函数。这是否可取?”

在函数内调用函数没有任何问题。这取决于案例,你需要保留平方值(在你只需要打印值的情况下),并对其执行其他操作。像:

int value = myFun(100);
int nextVal = myNextFun(value);
  

“另一件事在我身上唠叨是我是否需要在变量编号之前将类型重复为函数参数中的int,或者是否足以将结果声明为int类型,并在参数中省略了类型,我在下面做了。“

是的,您应该使用定义数字的类型(在您的情况下,默认情况下它将是整数类型,如果您有其他类型,则会失败)作为最佳实践,因为它将使代码更清晰和可读。< / p>