arrays - 为什么最后一个数组元素打印数组大小?
问题描述
#include <stdio.h>
int f(int a, int b){
if(a > 8 || a<0){
printf("?\n");
b = 2;
}else if(b != 1){
b= 1;
}else{
b = 2;
}
return b;
}
int main(){
int position[8];
int currentPosition;
int loopNumber;
int loopNumber2;
for(loopNumber = 0;loopNumber <= 8; loopNumber++){
position[loopNumber] = -1;
printf("%d\n", position[loopNumber]);
}
scanf("%d", ¤tPosition);
//printf("%d\n",f(currentPosition, position[currentPosition]));
position[currentPosition] = f(currentPosition, position[currentPosition]);
for(loopNumber2 = 0;loopNumber2 <= 8; loopNumber2++){
printf("%d\n", position[loopNumber2]);
}
return 0;
}
我得到:
*-1
-1
-1
-1
-1
-1
-1
-1
-1
**0 (my input)**
1
-1
-1
-1
-1
-1
-1
-1
8*
为什么最后会打印 8?第 8 个元素第一次打印 -1 但在我调用我的函数后它打印数组大小?
解决方案
像您一样存储到不存在的位置[8] 是未定义的行为。当您有未定义的行为时,任何事情都可能发生。无论您喜欢与否,就 C 语言而言,无论发生什么都是正确的。
“为什么?” 无关紧要。这是你的错,你自己的错,你处理它。修复你的代码。
推荐阅读
- visual-studio-code - VS Code 中的“在文件中搜索”
- javascript - 如何使最小高度为 300 像素的 ng-bootstrap 轮播响应?
- scala - scala spark数据框爆炸很慢-因此,替代方法-从列中的数组创建列和行
- c - 如何调试 Lua 扩展随机段错误
- objective-c - Objective-C:最小的 init 与调用 initWith 的 init?
- r - 如何根据另一个向量的值范围获取向量的值范围?
- python - 出现运行时错误,但实际操作成功执行
- python - Python 3.6:加快 Pandas 数据框中的正则表达式替换
- python - 为什么我在 for 循环中收到无效的语法错误?
- python - 从熊猫中的相同列值中提取值数组