【问题标题】:Trouble understanding the differences between 2 sets of code that get the same results难以理解获得相同结果的两组代码之间的差异
【发布时间】:2013-12-18 20:31:23
【问题描述】:

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

我的在 main 区域的函数调用中有“printf”,但实验室的正确答案代码在 main 区域之外有 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);
}

【问题讨论】:

  • 在 C 或任何其他编程语言中,有许多不同的方法可以做任何事情。您的代码实际上在功能上等同于“正确”答案。
  • 在 C 中不仅有两种方法,而且有很多方法可以做同样的事情。
  • 代码的正确与否不能说,如果结果和预期一样,说明代码正确。您的解决方案和解决方案一样好。
  • 函数名是addSix而不是addSixAndPrint。您的代码更正确。

标签: c function loops


【解决方案1】:

最简单的概念化方法是逐行浏览代码。您的printf 调用调用addSix 并打印结果。实验室的版本从addSix 函数内部进行打印。编写代码总是有多种方法。在这种情况下,您的版本与正式版本一样有效。就其价值而言,我认为你的更好。

【讨论】:

  • 我同意教练的方式不太优雅。
【解决方案2】:

实际上有数百种不同的方法可以做到这一点。您的讲师向您展示的方式是创建一个变量并进行赋值,然后将该变量传递给 printf 函数。

将单行函数作为参数传递给不同的函数被认为(稍微)更高级,这就是您所做的。这或多或少是错误的;只是不一样。

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

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

【讨论】:

    猜你喜欢
    • 2013-10-20
    • 2021-11-24
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多