| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1100 人关注过本帖
标题:很奇怪的一个问题
取消只看楼主 加入收藏
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:4 
很奇怪的一个问题
下面这个程序
经dev c++编译,运行不断刷屏。经调试,在循环的过程中打印同时打印i,
i的值从0到31循环变化,就是到不了32。
而去掉itoa()函数,i的变化很正常。
我用minGW的gcc命令行编译,执行程序会出现同样的问题。
而我问论坛上的几个朋友,他们都说没出现这样的现象。
经发现,循环最大数改为31或以下就不会出现循环不中止问题,32或以上才会出现。
论坛上高手云集,有人知道是为什么吗?
#include <stdio.h>
   #include <stdlib.h>
    main()
    {
        char a[6];
        int i;
        for(i=0;i<=32;i++)
        {
            itoa(i,a,2);
        printf("%s\n",a);
            a[5]='\0';
        }
   }
搜索更多相关主题的帖子: include 朋友 
2016-09-04 21:14
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 2楼 wp231957
谢谢,我刚发现把数组改大一点,比如改成a[7]也不会出现。我想可能是\0溢出造成的。
不同电脑的溢出情况可能不一样,所以造成有的电脑可以,有的电脑不行。
2016-09-05 07:47
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
我用dev c++调试发现,如果定义的是a[6],那么a[6]的地址和i一样。如果定义的是a[7]
那么a[6]就比i的地址小1。请问这正常吗?
2016-09-05 21:41
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
我用dev c++调试发现,如果定义的是a[6],那么a[6]的地址和i一样。如果定义的是a[7]
那么a[6]就比i的地址小1。请问这正常吗?
2016-09-05 21:41
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 7楼 炎天
(i,a,2)的意思是把整数i转为字符串a表示的2进制数。
2016-09-19 07:11
快速回复:很奇怪的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032527 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved