考虑到函数被调用的次数,您将如何继续操作C中函数的返回值?

考虑到函数被调用的次数,您将如何继续操作C中函数的返回值?,c,function,C,Function,“编写一个函数,第一次调用时返回100,第二次调用时返回99,第三次返回98,等等。一旦数字为零,函数应始终返回0。” 我在这里完全迷路了,因为这很容易通过 int func() { int x = 100; if ( x == 0 ) return 0; else return x; --x; } 但这显然不起作用。有什么帮助吗?试试这个: #include <stdio.h> int func(void) { static int x = 100;

“编写一个函数,第一次调用时返回100,第二次调用时返回99,第三次返回98,等等。一旦数字为零,函数应始终返回0。”

我在这里完全迷路了,因为这很容易通过

int func()

{

int x = 100;

if ( x == 0 )
return 0;
else
return x;

--x;

}
但这显然不起作用。有什么帮助吗?

试试这个:

#include <stdio.h>

int func(void) {
        static int x = 100;
        return x ? x-- : 0;
}

int main(void) {
        int i;
        // Until 105 to see that it always returns 0 after 100 calls
        for(i = 0; i < 105; ++i)
                printf("%d\n", func());
        return 0;
}
如下定义您的函数:
之所以有这种神奇之处,是因为整型变量附加了静态限定符。
静态变量是程序数据部分的一部分,即使它是在函数中声明和定义的。数据段在加载程序时初始化一次。因此,当您调用此函数时,静态int x将只初始化100次。

static int x=100
返回x--
或仅使用全局变量a
static
可能是更好的选择,因为全局变量可能会从代码中的任何其他位置更改,从而导致函数产生错误的结果。修复代码的缩进。Kenobai,你有两个答案,你不想说什么吗?:)这不符合
x
达到零后返回零的要求。更新了@EOF,现在更好了吗?:)为什么太冗长了<代码>返回x?x--:0;-)<代码>返回x?x--:x
Hmm,类似于
static intx=101;返回x-=!!x第一次返回99。
if(x == 0)
    return 0;
return x--;
    int func() 
     {
        static int x = 100;
        if (x==0)
            return 0;
        else
            return x--;
     }