无法理解获得相同结果的两组代码之间的差异

时间:2013-12-02 23:36:43

标签: c function loops

我正在参加C课程并开始使用函数。我完成了本章实验的代码并且运行正常。然后我去查看实验室包含的正确答案代码,它与我的不同。

我在主区域的函数调用中有“printf”,但是实验室的正确答案代码在主区域外面有printf,但是在运行程序时它们都得到完全相同的结果。

这让我很困惑。似乎总有两种不同的方法可以在C中完成同样的事情。

有人可以向我解释一下吗?

我的代码:

#include <stdio.h>

void closing(void);
int addSix(int x);

int main()
{

    closing();
    closing();

    for(int index=0; index<10; index++) {

        printf("Result: %d\n", addSix(index));
    }





    return 0;
}

void closing(void)
{
    printf("That's all folks!\n");
}

int addSix(int x)
{
    int result = x+6;

    return result;
}

实验室的正确答案代码:

#include <stdio.h>

void closing(void);
void addSix(int x);


int main ()
{
    closing();
    closing();

    for(int i = 0; i<10; i++){
        addSix(i);
    }



    return 0;
}

void closing(void)
{
    printf("That's all folks.\n");
}

void addSix(int x)
{
    int result = x+6;
    printf("Result: %d\n", result);
}

2 个答案:

答案 0 :(得分:1)

实际上有数百种不同的方法。教师向您展示的方式是创建变量并进行赋值,然后将该变量传递给printf函数。

简单地将单行函数作为参数传递给不同的函数(稍微)更高级,这就是你所做的。它没有或多或少是错的;它只是不同。

他们工作的原因是因为他们有一个变量result,其中包含一个传递给printf函数的值。

您工作的原因是因为您将函数的返回值直接传递给printf函数而不使用中间变量

答案 1 :(得分:1)

概念化这个的最简单方法是逐行遍历代码。您的printf来电呼叫addSix并打印结果。实验室版本从addSix函数内部进行打印。编写代码总会有多种方法。在这种情况下,您的版本与官方版本一样有效。对于它的价值,我认为你的更好。