c ++中的代码是什么意思?

Joh*_*hny 2 c++ naming-conventions

我不明白变量k上发生了什么.例如,我试图把1,2,3,4,5,但k显示我1.

    int a[5];
    for (int i = 0; i < 5; i++) {
        cin >> a[i];
    }

    int k = 0;
    for(int j = 0; j < 5; j++) {
        k += a[j] > a[j+1];
    }
    cout << k;
Run Code Online (Sandbox Code Playgroud)

Abh*_*sal 7

k显示值为1,因为您正在访问超出范围的数组a.

j = 4,j+15所以你要访问a[5]这是越界.因此,它错误地显示a[j] > a[j+1]一个值.这是未定义的行为.

将您的代码更改为:

for(int j = 0; j < 4; j++) {
  k += a[j] > a[j+1];
}
Run Code Online (Sandbox Code Playgroud)

如果输入序列为1,2,3,4和5,则k的值为0.