问一个很奇怪的问题,不一定能答上来哦

ray88 2004-03-17 10:13:22
main()
{int k;
int i,j;
scanf("%d",&j);
scanf("%d",&k);
scanf("%d",&i);
printf("%d %d %d",i,j,k);
}
上述代码运行输入一个字符(非数字!)结果显示的值永远是64 3129 0
有人知道这是为什么吗?
...全文
45 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
newgina 2004-03-18
  • 打赏
  • 举报
回复
试一试
main()
{int a,k;
int i,j;
scanf("%d",&j);
scanf("%d",&k);
scanf("%d",&i);
printf("%d %d %d",i,j,k);
}
看看结果有什么规律
ray88 2004-03-18
  • 打赏
  • 举报
回复
我知道没有分配,但如果输入非整行内容的话也是这样的...
ray88 2004-03-18
  • 打赏
  • 举报
回复
那这三个值一直不变啊,就奇怪了,有谁能告诉我为什么会这样,定义变量是内存中是怎么分配的?
bjskyhorse 2004-03-18
  • 打赏
  • 举报
回复
没有初始化的时候,内存中实际是什么就是什么,完全可以每次就输出的是这个值,没什么奇怪的。
ok3020 2004-03-18
  • 打赏
  • 举报
回复

重起一下机器~~看看行不行^_^
herryhuang 2004-03-18
  • 打赏
  • 举报
回复
the value has not initialized yet.
ray88 2004-03-18
  • 打赏
  • 举报
回复
可是为什么就会分配这三个数值呢?
jiziba 2004-03-18
  • 打赏
  • 举报
回复
问题是为什么scanf不能把字符当作数字输进去
况且要输入三个数,结果只输一个字符她就跳到printf语句了?
ray88 2004-03-18
  • 打赏
  • 举报
回复
按newgina的做法结果还是这3个数字,我把ijk换别的也还是这3个数字
playmud 2004-03-18
  • 打赏
  • 举报
回复
缓冲区的问题,不必大惊小怪。
playmud 2004-03-18
  • 打赏
  • 举报
回复
你们再说什么?
wei9931 2004-03-18
  • 打赏
  • 举报
回复
可能是系统中一个默认值吧。我想你试试用其他的变量看看
yuanxulong198010 2004-03-17
  • 打赏
  • 举报
回复
我觉得是没有读进来,显示出来的只是分配内存中原始的值,所以一定要做初始化,要不,你可以把其中一个值做一下试试
byyyyy 2004-03-17
  • 打赏
  • 举报
回复
没有读进来,显示的是原本内存中的数
Quain 2004-03-17
  • 打赏
  • 举报
回复
天啊,好难的问题啊,没有标准答案的,^_^
newgina 2004-03-17
  • 打赏
  • 举报
回复
我在gcc下是1627505248 1627506819 4,我想重起一下会有其他的值出现
newgina 2004-03-17
  • 打赏
  • 举报
回复
所以声明变量一定要做初期化,不然会出现不可料的错误
caixiwen 2004-03-17
  • 打赏
  • 举报
回复
不一定是这个值
那是k,i,j当时所占内存中的数值转化为int后输出的
newgina 2004-03-17
  • 打赏
  • 举报
回复
应该是什么都没读进来,为i,j,k分配的区域原本就是那些值。在printf里显示出来了
ray88 2004-03-17
  • 打赏
  • 举报
回复
补充一下,就算什么也不输,就是把scanf都去掉也显示这3个数,奇怪了

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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