Language agnostic 增加for循环计数器的值

Language agnostic 增加for循环计数器的值,language-agnostic,loops,programming-languages,Language Agnostic,Loops,Programming Languages,是否有任何编程语言/脚本不允许增加循环中for循环的计数器 例如: for(int i = 0; i < 10; i++) { i++; print i } Output: 1 3 5 7 8 9 我不确定我是否完全理解你的问题但是 在python中: for i in range(10): print i i+=1 #if I print i now I will get i+1, 您将返回与以下相同的结果: for i in range(10

是否有任何编程语言/脚本不允许增加循环中for循环的计数器

例如:

for(int i = 0; i < 10; i++) 
{
    i++;
    print i
}

Output: 1 3 5 7 8 9

我不确定我是否完全理解你的问题但是

在python中:

for i in range(10):
    print i
    i+=1  #if I print i now I will get i+1, 
您将返回与以下相同的结果:

for i in range(10):
    print i
i、 e:

0123456789


我不确定我是否完全理解你的问题但是

在python中:

for i in range(10):
    print i
    i+=1  #if I print i now I will get i+1, 
您将返回与以下相同的结果:

for i in range(10):
    print i
i、 e:

0123456789


我不知道有哪种语言明确禁止它。但对于其后果有不同的概念

变量,就像在C中一样

在C中,这个循环有效地实现了步骤2,这是显而易见的

迭代器,如Python中的迭代器

在Python中,类似这样的循环由迭代器提供,迭代器不断生成独立于变量的新值

for i in range(0, 100):
   print "A:", i
   i += 1
   print "B:", i
导致

A: 0
B: 1
A: 1
B: 2
....
而C中的循环,如果提供了正确的输出,将导致

A: 0
B: 1
A: 2
B: 3
....

我不知道有哪种语言明确禁止它。但对于其后果有不同的概念

变量,就像在C中一样

在C中,这个循环有效地实现了步骤2,这是显而易见的

迭代器,如Python中的迭代器

在Python中,类似这样的循环由迭代器提供,迭代器不断生成独立于变量的新值

for i in range(0, 100):
   print "A:", i
   i += 1
   print "B:", i
导致

A: 0
B: 1
A: 1
B: 2
....
而C中的循环,如果提供了正确的输出,将导致

A: 0
B: 1
A: 2
B: 3
....

据我所知没有。但是,在C中,您可以为每个集合执行一个操作,如果集合发生更改,它将抛出一个异常

int[] myArray = new int[100];
foreach (var item in myArray)
{

}

据我所知没有。但是,在C中,您可以为每个集合执行一个操作,如果集合发生更改,它将抛出一个异常

int[] myArray = new int[100];
foreach (var item in myArray)
{

}

我认为C++11基于范围的for循环允许您防止它:

for (const int i : some_range) {
    ++i; // forbidden
}
但是我不认为标准提供了一种简单的方法来定义一个整数范围,就像普通for循环一样。某些范围可以是容器,也可以是boost::counting范围


你是否考虑这个for循环的计数器取决于你。我想一个合适的例子是一个循环,它使用一个任意表达式来修改循环之间的计数器,在您的示例中,I++使用了这个表达式,但不允许在循环中修改计数器。我认为C++11基于范围的for循环允许您阻止它:

for (const int i : some_range) {
    ++i; // forbidden
}
但是我不认为标准提供了一种简单的方法来定义一个整数范围,就像普通for循环一样。某些范围可以是容器,也可以是boost::counting范围


你是否考虑这个for循环的计数器取决于你。我想一个合适的例子是一个循环,它使用一个任意表达式来修改循环之间的计数器I++在你的例子中,但不允许在循环中修改计数器而不是通过该表达式。例如,Pascal基本上说,更改循环中的变量会产生未定义的行为Pascal用户手册,§C.3:控制变量、初始值和最终值必须是相同的标量类型,不包括real类型,并且不得被for语句更改


IIRC,Ada确实阻止你做这样的修改。看着《圣经》似乎证实了我极度虚弱的记忆Ada 95 RM,§5.510:循环参数是常数;它不能在循环的语句序列中更新。

Pascal举个例子,基本上说更改循环中的变量会产生未定义的行为Pascal用户手册,§C.3:控制变量、初始值和最终值必须是相同的标量类型,不包括real类型,并且不得被for语句更改


IIRC,Ada确实阻止你做这样的修改。看着《圣经》似乎证实了我极度虚弱的记忆Ada 95 RM,§5.510:循环参数是常数;它不能在循环的语句序列中更新。

PL/SQL不允许您修改循环变量:

SQL> begin 2 for i in 1..10 loop 3 i := i + 1; 4 end loop; 5 end; 6 / i := i + 1; * ERROR at line 3: ORA-06550: line 3, column 5: PLS-00363: expression 'I' cannot be used as an assignment target ORA-06550: line 3, column 5: PL/SQL: Statement ignored
PL/SQL不允许修改循环变量:

SQL> begin 2 for i in 1..10 loop 3 i := i + 1; 4 end loop; 5 end; 6 / i := i + 1; * ERROR at line 3: ORA-06550: line 3, column 5: PLS-00363: expression 'I' cannot be used as an assignment target ORA-06550: line 3, column 5: PL/SQL: Statement ignored