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)
k显示值为1,因为您正在访问超出范围的数组a.
当j = 4,j+1是5所以你要访问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.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |