c++ - 关于 C++ 中的 i++ 和++i

标签 c++

有以下两个求最大和次大整数的程序:

1.

int main()
{
    int const no_of_elements =10;
    int list[no_of_elements] = { 1, 2, 3, 4, 5, 10, 9, 6, 7, 10 };
    int largest = list[0];
    int second_largest = list[0];
    int pos_largest = 0;
    int pos_second_largest = 0;
    int i;

    for (i = 0; i < no_of_elements; i++)
    {
        if (largest <= list[i])
        {
            second_largest = largest;
            largest = list[i];
            pos_second_largest = pos_largest;
            pos_largest = i;
        }
    }

    cout << "Largest number is : " << largest << "\n";
    cout << "And it is at the position : " << ++pos_largest << endl;
    cout << "Second largest number is : " << second_largest << " and its at the position : " << ++pos_second_largest << endl;
    return 0;
}

2。 在 for 循环中,我执行 pos_largest =++i
他们给出了不同的答案:
1. 给出 largest=10 secondlargest=10 即根据需要
但是 2. 给出 largest=10 secondlargest=9

请解释一下????

最佳答案

i++ 是后递增的。这意味着“给我 i 的值,但在那之后,递增它”。

++i 是预递增的。这意味着“增加 i,然后给我它的新值”。

int i = 1;
int a = i++; // a is now 1, i is 2

i = 1; // reset i's value to 1
int b = ++i; // i's value is incremented to 2, b's value is 2

关于for 循环,两者具有相同的效果

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

for (i = 0; i < 10; ++i) {
    // ...
}

for 循环中的第三部分在循环体的每次迭代(执行)之后运行。

关于c++ - 关于 C++ 中的 i++ 和++i,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20625553/

相关文章:

c++ - C++ 中的双变量显示相等,即使它们不相等

c++ - 如何更改复选框属性? C++/VS

c++ - 如何使用 range-v3 创建 view_facade

c++ - 从 uint32 或 uchar 数组创建 ARGB QImage

c++ - Ogre3D 中的类声明中 `_OgreExport` 的用途是什么?

C++ - 具有右值引用的函数模板特化行为

c++ - 计算二分图中的路径数(长度 N)

c++ - Qt/C++中多线程的随机函数调用

C++ 使用 (void * caller obj) 参数访问类私有(private)属性友元函数

c++ - 我需要用nullptr初始化吗?