考虑到函数被调用的次数,您将如何继续操作C中函数的返回值?
“编写一个函数,第一次调用时返回100,第二次调用时返回99,第三次返回98,等等。一旦数字为零,函数应始终返回0。” 我在这里完全迷路了,因为这很容易通过考虑到函数被调用的次数,您将如何继续操作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;
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--
或仅使用全局变量astatic
可能是更好的选择,因为全局变量可能会从代码中的任何其他位置更改,从而导致函数产生错误的结果。修复代码的缩进。Kenobai,你有两个答案,你不想说什么吗?:)这不符合x
达到零后返回零的要求。更新了@EOF,现在更好了吗?:)为什么太冗长了<代码>返回x?x--:0代码>;-)<代码>返回x?x--:x
Hmm,类似于static intx=101;返回x-=!!x“编写一个第一次返回100的函数”-->第一次返回99。
if(x == 0)
return 0;
return x--;
int func()
{
static int x = 100;
if (x==0)
return 0;
else
return x--;
}