以下代码中变量s
的总范围是多少?
1: procedure sum(array: integer_array) 2: var s: integer; 3: begin 4: s := 0; 5: for i in array'range loop 6: s := s + array(i); 7: end loop; 8: end;
我看到的方式有两种可能的解释:
以下两个常见定义有助于澄清问题:
请注意,这些概念与内存分配,范围或代码中可以的变量无关。这些是指代代码中实际使用变量的指标。
答案 0 :(得分:1)
我对此的看法是声明不计,但初始化计数。
使用你的例子,第2行的声明不计算,因为变量在第4行之前没有被初始化,这意味着在此之前它不能被“实时”计算。
在某些情况下,声明构成隐式初始化(例如,具有默认构造函数的类型的对象的C ++声明)。在这些情况下,声明和初始化发生在同一行,这意味着声明的行应该被认为是变量的第一次使用。
答案 1 :(得分:0)
在这里回答这个问题,也许这会有所帮助:“这个问题的范围”。这里是2,平均跨度也是2。