【发布时间】:2017-11-03 10:04:35
【问题描述】:
在 C 语言中,static 变量的作用域贯穿整个文件。
在以下代码中,函数返回静态变量。
int fun(){
static int i = 10;
return i;
}
int main() {
printf("%d\n", fun());
return 0;
}
并打印输出 10。
那么,在 C 中返回 local static 是未定义的行为还是明确定义的?
【问题讨论】:
-
定义明确。在这种情况下,不必是
static。与return 10;相同 -
定义完美..
-
也许我匆忙回答,只是为了澄清一下,有没有什么具体的东西让你认为这会是 UB?
-
我相信您将此与
int* fun (void) { static int i = 10; return &i; }与int* fun (void) { int i = 10; return &i; }混淆了,这是另一个故事。前者是明确定义的,后者是未定义的行为。
标签: c variables static return return-value