“我”的意思,为什么在那里?

时间:2019-03-02 09:21:54

标签: c++ variables declaration

我也是编码的新手。最近,我一直在研究原理和使用C ++进行练习,并且在他的代码中总是有i插入他的示例中。有些在“向量的下标”函数内部,或者在“用于语句”内部,例如int i.,但是他甚至没有创建名为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;
}

4 个答案:

答案 0 :(得分:1)

i在此处声明为类型int的变量:

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

i仅在for循环内具有作用域。循环终止后,该变量i的生存期也将终止。

答案 1 :(得分:1)

编写软件程序时,声明的每个变量必须具有含义,必须表示某些内容。

您刚刚阅读的书摘片段中也是如此,只是我们在谈论数组。如您所知,数组是相同值类型的值的集合。因为它是一个集合,所以它意味着该数组中有1个或更多值。

这引发了一个问题:如果有1个或更多的值,我如何获得该数组的一个特定值?这是您读到的i的来源。 >

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

在这种情况下,int i作为变量不是强制性的,但这是一种非常普遍的做法。例如,如果您有矩阵,则将需要两个这样的变量(一个用于行,一个用于列),最有可能是ii

这也解释了为什么我们在j循环内使用i。用英语来说,这意味着循环适用于系数编号从0到数组大小的元素。

fori循环中被声明为int类型,但是也可以在该循环之前声明。像这样:

for

答案 2 :(得分:0)

i是约定的一部分,代表iteration number

它已在for循环中定义:

for (int i = 0 ....

基本上,这说明您从零号迭代开始。获得经验后,您会发现迭代并非总是从零开始,因此i可能会使用不同的值进行初始化(或者可能会使用不同的变量名来代替i

从数学上讲,i通常用于列表/数组的上下文:the ith elementsummation from i=0 to i=n等。

答案 3 :(得分:0)

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

首先,让我们考虑一个向量及其外观。向量是可变长度数组。

因此,如果我们有一个名为vector且包含5个元素的myVector,那么我们看起来像

myVector:   item1    item2    item3    item4    item5

现在我们如何指定单个项目?我们需要为每个项目建立索引。传统上(从数学上),索引是从0开始的。因此要索引第一个元素,我们做myVector[0]。为了索引第二个元素,我们执行myVector[1],依此类推。 ([]被称为 subscript 运算符。您也可以使用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]
}