C++ ';i';这是什么意思?为什么?

C++ ';i';这是什么意思?为什么?,c++,variables,declaration,C++,Variables,Declaration,我也是新来的。最近我一直在使用C++的原理和实践,在他的代码里面总是有一个 i>代码插入到他的例子中。有些在“向量的下标”函数中,或者在“for语句”中,比如inti.但是他甚至没有生成一个名为i的int,它就在那里。也许我在阅读时遗漏了什么,我不知道,但我希望有人不会介意给我一个解释,为什么它会被插入到它所在的位置,或者仅仅是I的意思 下面,我从第148页选取了他的一个例子来向你们展示 int main() { vector<double> temps; //temper

我也是新来的。最近我一直在使用C++的原理和实践,在他的代码里面总是有一个<代码> i>代码插入到他的例子中。有些在“向量的下标”函数中,或者在“for语句”中,比如
inti.
但是他甚至没有生成一个名为
i
的int,它就在那里。也许我在阅读时遗漏了什么,我不知道,但我希望有人不会介意给我一个解释,为什么它会被插入到它所在的位置,或者仅仅是
I
的意思


下面,我从第148页选取了他的一个例子来向你们展示

int main()
{
    vector<double> temps; //temperatures
    double temp = 0;
    double sum = 0;
    double high_temp = 0;
    double low_temp = 0;

    while (cin>>temp) // read and put into temps
        temps.push_back(temp) ;

    for (int i = 0; i<temps.size(); ++i) // these 'i's
    {
        if(temps[i] > high_temp) high_temp = temps[i]; // and these
        if(temps[i] < low_temp) low_temp = temps[i];
        sum += temps[i]; // compute sum
    }

    cout << " High temperature: " << high_temp<< endl; // find high
    cout << " Low temperature: " << low_temp << endl; // find low
    cout << "Average temperature: " << sum/temps.size() << endl;
}
intmain()
{
向量temps;//温度
双温=0;
双和=0;
双高温=0;
双低温=0;
while(cin>>temp)//读取并放入temps
临时推回(临时);
对于(int i=0;i high_temp)high_temp=temps[i];//以及这些
如果(temps[i]cout
i
被声明为
int
类型的变量,如下所示:

for (int i = 0; .......)
{
   // 'i' used here
}
// 'i' cannot be used here

i
的作用域仅在for循环内。循环终止后,变量
i
i
的生存期也是约定的一部分,它代表
迭代次数

它已在
for
循环中定义:

for (int i = 0 ....
这基本上是从迭代次数0开始的。一旦您获得了一些经验,您将看到迭代并不总是从零开始,因此可以使用不同的值初始化
i
(或者使用不同的变量名,而不是使用
i


从数学上讲,
i
通常用于列表/数组的上下文:
第i个元素
从i=0到i=n的求和
等。

i
是一个整数,用作
i
变量。你经常看到它在循环中

首先,让我们考虑一个向量和它的样子。向量是可变长度数组

因此,如果我们有一个名为
myVector
vector
和5个元素,那么我们有一个

myVector:   item1    item2    item3    item4    item5
现在我们如何指定单个项目?我们需要为每个项目编制索引。传统上(从数学上讲),索引从0开始。因此,为了索引第一个元素,我们需要
myVector[0]
。为了索引第二个元素,我们做了
myVector[1]
,依此类推。(
[]
被称为下标运算符。您也可以使用
myVector.at(0)
myVector.at(1)
,但使用较少。)

如果我们想在向量中找到最小值或最大值呢?我们需要检查每一项并进行比较。所以我们需要迭代(循环)整个数组

我们如何做到这一点?我们如何迭代每个每个项目?要循环浏览每个项,我们需要一些东西来指定这些项。要循环浏览每个项目,我们需要一个循环

代码中的循环执行此操作,从0迭代到数组/向量的长度

for (int i = 0; i < temps.size(); ++i)   // iterate through EVERY element of the vector
{
    //  access EACH element of using temps[i]
}
for(int i=0;i
当您编写软件程序时,您声明的每个变量都必须有一个含义,必须表示某种东西

这也是你刚刚读到的书片段中的情况,只是我们讨论的是数组。正如您所知,数组是相同值类型的值的集合。因为它是一个集合,这意味着该数组中有一个或多个

这就提出了一个问题:如果还有1个或更多的值,我如何访问该数组的一个特定值?这里是你读到的
i
的地方

变量
i
的含义是我正在处理的数组的位置,其中“处理”可以表示读取、写入等。因为
i
是一个变量,它必须具有数据类型,因此使用
int i
表示法

在此上下文中使用
i
作为变量不是强制性的,但这是一种非常常见的做法。例如,如果您有一个矩阵,您将需要两个这样的变量(一个用于行,一个用于列),它们很可能是
i
j

这也解释了为什么我们在
for
循环中使用
i
。在英语中,这意味着循环与系数从0到数组大小的元素一起工作

i
for
循环中声明为
int
类型,但也可以在该循环之前声明。比如:

int i=0;

...

for (i=0; i<...)
inti=0;
...

对于(i=0;i‘他没有做一个名为i的int’,你认为这是什么(int i=0;
)的
int
?这是一个名为
i
int
。我肯定这必须在书的某个地方解释,否则这是一本非常糟糕的书(int i=0;
它不是声明了一个
int
i吗?代码应该是可编译的。如果你愿意,可以在那一行添加注释。像这样添加
***
更糟糕,因为它与乘法和解引用操作符以及指针相同declaration@john非常感谢你的答复。我必须略过那一部分,因为我我不知道我可以在语句内部生成一个int。我想在编写语句之前必须这样做。再次感谢你。@Tommy,这是一个特例,因为它阻止
I
从循环外部存在。