免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1407 | 回复: 8
打印 上一主题 下一主题

求教个简单C问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-22 14:13 |只看该作者 |倒序浏览
#include <stdio.h>

main()
{
        int tst;
        for(tst=0;tst<32768;tst++)
                printf("tst^2=%ld\n",tst*tst);
}
问:TC下打印的结果是什么

这样肯定得不到预期得结果

求出错原因

论坛徽章:
0
2 [报告]
发表于 2006-03-22 14:38 |只看该作者
溢出

论坛徽章:
0
3 [报告]
发表于 2006-03-22 14:50 |只看该作者
结果是正确的 只是显示的是最后几个的结果
你要想看到所有的结果要建立一个文件,然后把结果写到文件里

论坛徽章:
0
4 [报告]
发表于 2006-03-22 14:53 |只看该作者
原帖由 billzhou 于 2006-3-22 14:50 发表
结果是正确的 只是显示的是最后几个的结果
你要想看到所有的结果要建立一个文件,然后把结果写到文件里


应该怎么做 不会

论坛徽章:
0
5 [报告]
发表于 2006-03-22 14:56 |只看该作者
tst*tst的结果是什么类型?int,对吧?那么它的值呢?是多少?会不溢出?即使你用ld输出那结果也是int型.转换成2进制你能算的更清楚.

论坛徽章:
0
6 [报告]
发表于 2006-03-22 15:07 |只看该作者

回复 5楼 萤火虫 的帖子

2得15次方是32768 tst*tst最大是2得30次方对吧
我记得TC int 是16位表示应该是要溢出得
不 过 我 调试看到得 只是8..........一系列数字
我想的迷惑应该是billzhou 所说的
billzhou 告诉我应该怎么做!

论坛徽章:
0
7 [报告]
发表于 2006-03-22 15:09 |只看该作者
这是用c++写的,你可以参考一下
#include <fstream>
#include <iostream>
using namespace  std;
#define FILEPATH    "result.txt"

int main()
{
        fstream  file;
       
        file.open(FILEPATH,ios:ut);
        if(!file)
        {
                cerr<<"canot open file!"<<endl;
                exit(1);
        }
        for(int i=0;i<62768;i++)
        {
                file<<"i*i="<<i*i<<endl;
        }
        return 0;
}

论坛徽章:
0
8 [报告]
发表于 2006-03-22 15:13 |只看该作者

回复 7楼 billzhou 的帖子

谢谢了
我还以为TC可以设置直接生成呢

论坛徽章:
0
9 [报告]
发表于 2006-03-22 16:32 |只看该作者
是的,这是整数的溢出问题,32768会
当32768*32768时,好像也会发生溢出现象
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP