看下这个小问题:为什么输出是...6789678967896789....

只见烟火飞扬 2005-05-01 12:09:45
#include<iostream>

void main()
{
int N(0);
int m[9][4];
while(N++<10)
{
cout<<N<<' ';
m[N][0]=5;
cout<<endl;
}
}
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
只见烟火飞扬 2005-05-01
  • 打赏
  • 举报
回复
N &N &m[n][0]
6 0012FF74 0012FF44

7 0012FF74 0012FF54

8 0012FF74 0012FF64

9 0012FF74 0012FF74
************************************
原来是N的地址接和m[9][0]地址一样
只见烟火飞扬 2005-05-01
  • 打赏
  • 举报
回复
而如果是改为用一维数组 int m[9]..... m[N]=5;....虽然也是越界,程序却不会出错(若输出的话,m[9]也等于5;)
useresu 2005-05-01
  • 打赏
  • 举报
回复
++此处是后置运算符,先把9做为N<10判断后,才给N++的,
数组越界,
导致内存出错了,
可能刚好m[10][0],跟N的位置冲突了.
只见烟火飞扬 2005-05-01
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;

我复制的时候弄错了,本来是有**std这一行的,问题是为什么当N为9时,m[N][0]=5这句就会使N变成5?
useresu 2005-05-01
  • 打赏
  • 举报
回复
数组越界了
因为N = 9时,
while(N++< 10)依旧成立,

循环体中N 已经等于10了,导致数组越界
cppprogramlover 2005-05-01
  • 打赏
  • 举报
回复
少了std
也不会出现那种结果,应该

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧