void fn()这个函数里不是规定了函数返回值为void了么?为何在for中,却能用这个没有返回值的void函数继续循环运算下去,他是怎么储存的?

来源:5-11 变量存储类别

我爱电脑与体育

2015-01-31 14:53

#include <stdio.h>

void fn()

{

    static int x = 1;   //定义静态局部变量

    x*=2;

    printf("x=%d\n",x);     

}


int main()

{

    int i;

    for(i=0;i<5;i++)

    {

        fn();

    }

    extern int x;      //调用外部变量

    printf("x=%d\n",x);

    return 0;

}

int x=100;

想不明白,明明这个函数为无返回型void函数,为何会有返回值供for判断语句循环?

写回答 关注

3回答

  • onemoo
    2015-02-01 17:58:15

    for循环判断的是括号中第一个分号后面的表达式,也就是for(i=0;i<5;i++)中的 i<5。这与循环体中的内容没有关系。

  • May_Day
    2015-01-31 19:39:35

    根据你题目的意思,for循环必定循环5次,这是与其中的内容无关的,因为循环结束的判定条件是i<5。

    而循环的内容就是调用fn这个函数,这个函数呢是void,所以是没有返回值的,所以这样写↓是会报错误的(略微加了点东西,看循环里面)

    #include <stdio.h>
    #include <stdlib.h>
    void fn()
    {
        static int i=0;
        printf("%d\n",i++);
    }
    int main()
    {
        int i;
        int wrong;
        for(i = 0; i < 5; i++)
        {
            wrong=fn();
        }
        return 0;
    }

    大概明白了吗?函数的void与否与循环没有一丁点关系。至于储存与一般的函数相同,具体的你想知道吗?得用汇编的知识了。。。

  • May_Day
    2015-01-31 15:13:50

    这是在for循环里不断调用fn而已 , void是指没返回值 , 如果不是void 就可能有 a=fn();

    我爱电脑与体...

    不懂,a是?举个例子?

    2015-01-31 17:26:05

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926894 学习 · 21464 问题

查看课程

相似问题