-1
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沒有「動態作用域」)會影響它們。 – user2864740
什麼語言? 'print a' is not valid C. – owacoder
C/C++不使用動態範圍。你的編程語言會使用其中一種,你不會選擇 – JerryGoyal