C++ if语句如何在for循环中工作

C++ if语句如何在for循环中工作,c++,arrays,if-statement,for-loop,C++,Arrays,If Statement,For Loop,此代码查找动态数组的最大元素 int i, n, *x, max; cout << "eneter a number: "; cin >> n; x = new int[n]; max = x[0]; for (i = 0; i < n; i++) { if (x[i] > max) { max = x[i]; }

此代码查找动态数组的最大元素

int i, n, *x, max;
    cout << "eneter a number: ";
    cin  >> n;
    x = new int[n];
    max = x[0];
    for (i = 0; i < n; i++)
    {
        if (x[i] > max)
            {
            max  = x[i];
            }
    }
    cout << max << endl;

    delete []x;
所以输出是22

我不明白如果选择22作为最大值

这是我对其工作原理的理解:

n=4
{3, 22, 15, 17}

x[0] = 3 
first loop i=0 -> x[0]>x[0] false

x[1] = 22
second  loop i=1 -> x[1]>x[0] true

x[2] = 15
third loop i=2 -> x[2]>x[0] true

x[3] = 17
forth loop i=3 -> x[3]>x[0] true
我知道我错了,但作为我的假设,17一定是最大值。 我错过了什么

这是我的全部代码:

#include <iostream>

using namespace std;

int main(){


    int i, n, *x, sum=0, location, max;
    cout << "eneter a number: ";
    cin  >> n;
    x = new int[n];
    for(i=0; i<n; i++){

        cin >> x[i];

}
    cout << endl<< x[0];
    max = x[0];
    for (i = 0; i < n; i++)
    {
        if (x[i] > max)
            {
            max  = x[i];
            location = i+1;
            }
    }
    cout << endl<< max;

    delete []x;


}
在这一步中

x[1] = 22
second  loop i=1 -> x[1]>x[0] true
如果if语句的条件值为true,则执行if语句的子语句

if (x[i] > max)
{
    max  = x[i];
}
最大值设置为22

    max  = x[i];
在以下步骤中,将x[i]与新的最大值So进行比较,而不是

x[2] = 15
third loop i=2 -> x[2]>x[0] true

x[3] = 17
forth loop i=3 -> x[3]>x[0] true
这样写是正确的

x[2] = 15
third loop i=2 -> x[2]>max false

x[3] = 17
forth loop i=3 -> x[3]>max false
考虑到在报头中声明的标准算法std::max_元素实际上也是如此。你可以这样称呼它

#include <algorithm>

//...

int *max = std::max_element( x, x + n );

std::cout << "max = " << *max << std::endl;

你确实在某个地方初始化了数组,不是吗?请创建一个并向我们展示。如果x[i]>x[0],它应该是如果x[i]>max。此外,您的数组从未初始化。易卜拉希姆哈迪,您拥有的代码,将为max选择17,前提是您也使用cin为数组输入,您确定您使用了如果x[i]>x[0],而不是如果x[i]>max,正如@zahirdhada所建议的那样?@易卜拉希姆哈迪,您的程序的行为未定义,因为您的数组从未初始化,但假设您使用{3,22,15,17}初始化它,则输出将是17,而不是22。@ebrahimhadi,现在输出将是17,因为if x[i]>x[0]。如果x[i]>max,则输出为22。
#include <algorithm>

//...

int *max = std::max_element( x, x + n );

std::cout << "max = " << *max << std::endl;