为了账号安全,请及时绑定邮箱和手机立即绑定

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

#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 回答

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

0 回复 有任何疑惑可以回复我~

根据你题目的意思,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与否与循环没有一丁点关系。至于储存与一般的函数相同,具体的你想知道吗?得用汇编的知识了。。。

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

我爱电脑与体育 提问者

不懂,a是?举个例子?
2015-01-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信