我的朋友做了这个代码,我不知道它是如何工作的,例如这个表[+1]
#include <iostream>
using namespace std;
int main()
{
int a=0;
int tablica[100];
for (tablica[0]=1;tablica[a]<=100;tablica[+1]){
cout << tablica[a] << endl;
tablica[a]+=1;
}
}
答案 0 :(得分:1)
for
循环,如:
for (init; test; repeat) {
body;
}
大致相当于:
init;
while (test) {
body;
repeat;
}
所以你给出的循环就像:
tablica[0]=1;
while (tablica[a] <= 100) {
cout << tablica[a] << endl;
tablica[a] += 1;
tablica[+1];
}
由于a
已初始化为0
且永不更改,因此tablica[a]
与tablica[0]
相同。
tablica[+1]
已执行,但它从不使用该数组元素的值。数组元素未初始化,因此其值是不确定的,但由于该值未用于任何事情,因此不存在问题。您可以忽略它的那一部分(编译器很可能会将其优化掉)。
所以这与典型的循环没有太大区别:
for (i = 1; i <= 100; i++) {
cout << i << endl;
}
你的朋友只是试图通过使用数组元素而不是用于迭代的简单变量来混淆你(和成功),并抛出看起来有点像迭代的无关表达式tablica[+1]
,但不是'实际上做了什么。
答案 1 :(得分:0)
a
始终为0,因此tablica[0]
和tablica[a]
始终是相同的。
for (tablica[0]=1;
,现在我们已将tablica[0]
初始化为1。
tablica[a]<=100;
,当tablica[0]
大于100时,这会中断。
tablica[a]+=1;
,它实际上在循环中递增。
答案 2 :(得分:-2)
它只是cout tablica[0]
但是100次(从1 2 3 ... 100开始),每次递增tablica[0]
。变量a
永远不会改变。
for
tablica[+1]
处的tablica[1]
等于{{1}},但它只是从中获取价值,并且不做任何事情。