gpt4 book ai didi

c - C 中嵌套函数的作用域如何受到影响?

转载 作者:行者123 更新时间:2023-11-30 19:42:05 26 4
gpt4 key购买 nike

int a=27;
f()
{
int a=32;
g();
}
g()
{
print a;
{
int a=99;
h();
}
}
h()
{
print a;
}
void main()
{
print a;
f();
g();
h();
}

我得到的静态范围答案为 27, 27, 27, 27, 27, 27,动态范围答案为 27, 32, 99, 27, 99, 27。我说得对吗?

最佳答案

C/C++ 不使用动态作用域,因此您总是会得到相同的答案:27, 27, 27, 27, 27, 27。
关于范围界定的更多信息:

静态范围:

const int b = 5;
int foo()
{
int a = b + 5;
return a;
}

int bar()
{
int b = 2;
return foo();
}

int main()
{
foo(); // returns 10
bar(); // returns 10
return 0;
}

动态作用域(未在 C/C++ 中使用......为了示例)

const int b = 5;
int foo()
{
int a = b + 5;
return a;
}

int bar()
{
int b = 2;
return foo();
}

int main()
{
foo(); // returns 10
bar(); // returns 7
return 0;
}

动态作用域意味着当引用符号时,编译器/解释器将遍历符号表堆栈以找到要使用的变量的正确实例。

关于c - C 中嵌套函数的作用域如何受到影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32801433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com