我的终端只打印了main的第一个输出

时间:2018-06-27 08:04:07

标签: c

这里是C的入门者,我在int one_three()中打印单词“ one”和在function()中打印单词“ two”时遇到了麻烦。

在我的终端上打印的唯一文字是“从现在开始”-是否有人知道为什么会这样?

任何帮助将不胜感激。

int one_three();
int two();

int main(void)
{
    // Countdown begins
    printf("starting now: ");
    printf("\n");
    int one_three();
    int two();

    return 0;
}

int one_three()
{
    printf("one");
    int two();

    return 0;
}

int two()
{
    printf("two");

    return 0;
}

5 个答案:

答案 0 :(得分:3)

您不会调用功能,而声明功能(再次)。

例如致电one_three然后您完成

one_three();

关于函数声明,在C中,如果函数不接受任何参数,则必须显式使用void作为参数。诸如

的声明
int two();

告诉编译器函数two返回int,并接受未知数量的未指定参数。正确的声明应该是

int two(void);

答案 1 :(得分:2)

int one_three();
int two();

int main(void)
{
    // Countdown begins
    printf("starting now: ");
    printf("\n");
    one_three();
    two();

    return 0;
}

int one_three()
{
    printf("one");
    two();

    return 0;
}

int two()
{
    printf("two");

    return 0;
}

在调用函数时,您不应声明类型(即char,int或float)。

答案 2 :(得分:1)

您应该像这样更改代码。

...
int main(void)
{
    // Countdown begins
    printf("starting now: ");
    printf("\n");
    one_three();
    two();

    return 0;
}
...

答案 3 :(得分:1)

您已在main()内再次声明了函数。这就是为什么仅打印“立即开始” 的原因。您需要像这样从main()调用该函数:

int main(void)
{
    // Countdown begins
    printf("starting now: ");
    printf("\n");
    one_three();
    two();

    return 0;
}

答案 4 :(得分:0)

让我向您解释一些基本知识。 代码中的前两行

int one_three();
int two();    

-是函数声明或函数原型,它告诉编译器主函数后有一个函数定义。

如果不想使用,可以将函数定义保留在main函数之前。

int one_three()
{
    printf("one");
    int two();

    return 0;
}

int two()
{
    printf("two");

    return 0;
}
int main(void)
{
    // Countdown begins
    printf("starting now: ");
    printf("\n");
    one_three(void);
    two(void);

    return 0;
}

您将在main()中再次声明函数,您需要在其中调用它们。 如果您未传递任何值或引用,则将实际参数传递为 void 。 由于您要从这些函数返回0,因此返回类型为int,就可以了。

int main(void)
{
    // Countdown begins
    printf("starting now: ");
    printf("\n");
    one_three(void);
    two(void);

    return 0;
}