如果C ++具有动态范围,该程序将输出什么?

时间:2017-10-30 23:04:29

标签: c++ dynamic scope static

这是一个测试静态和动态范围的简单程序。但是,我无法使用动态范围输出答案,因为C ++使用静态范围。

说明:

静态范围 - 变量的范围基于子程序(函数)的空间(块结构)关系

动态范围 - 变量的范围基于子程序(函数)的调用顺序,而不是基于块结构。

#include <iostream>
using namespace std;

int a;
int b;

int p()
{
    int a, p;
    a = 0;
    b = 1;
    p = 2;
    return p;
}

void print()
{
    cout << a << " " << b << endl;
}

void q()
{
    int b;
    a = 3;
    b = 4;
    print();
}

int main()
{
    a = p();
    q();
}

此代码输出:

3
1

使用静态范围,但是用动态范围输出什么呢?

我的猜测是

3
4

但我不确定因为我无法使用动态范围测试C ++代码

第二个问题:是否有一种可访问的方法来测试这样的代码示例,使用动态范围代替静态用于学习目的?

0 个答案:

没有答案