在函数或测试函数中再次初始化时,CAPL中的全局变量会发生什么情况?
variables
{
int i;
}
testfunction temp()
{
int i = 0;
for(i = 0; i < 10; i++)
{
// do something
}
}
for(i = 0; i < 5; i++)
{
temp();
}
答案 0 :(得分:0)
在CAPL的变量部分中,声明了全局变量。此处定义的标识符具有程序范围。声明全局变量后,整个程序的任何函数都可以对其进行访问。
variables
{
int xyz; // Identifier 'xyz' declared in an program scope
}
第二个标识符在函数范围中声明,并且与以前的标识符没有区别。函数作用域具有更多的内部作用域。
void temp()
{
int xyz; // Identifier 'xyz' declared in an function scope
xyz=5;
write("Inner scope -> d%",xyz);
}
CAPL设置了'C like'范围规则,因此:如果两个标识符具有相同的名称但范围不同,则内部范围的标识符会隐藏外部范围的标识符。< / em>
在此示例中,函数temp中的对象xyz隐藏了全局变量xyz:
on key * // call event
{
xyz=10;
write("Outer Scope -> %d",xyz); // Program Scope
temp(); // Function Scope
}
输出: