| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 467 人关注过本帖
标题:调不通,求解释
取消只看楼主 加入收藏
mk200
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-4-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
调不通,求解释
编译环境VC6通过,TC2.0出现奇怪问题。
表现在输入较大的数时,比如999999999(9个9)
我觉得不该溢出的。结果却出乎我意料。

// min_sec.c -- converts seconds to minutes and seconds
#include <stdio.h>
#include <limits.h>
#define SEC_PER_MIN 60   
#define SEC_PER_HOUR 3600
int main(void)
{
    int min, leftsec,hour;
    long sec;
    printf("%d,%ld\n",INT_MAX,LONG_MAX);
    printf("Convert seconds to minutes and seconds!\n");
    printf("Enter the number of seconds (<=0 to quit):\n");
    scanf("%d", &sec);         
    while (sec > 0)
    {
        hour = sec / SEC_PER_HOUR;  
        printf("hour=%d\n",hour);
        leftsec = sec % SEC_PER_HOUR;
        printf("leftsec=%d\n",leftsec);
        min = leftsec/SEC_PER_MIN;
        printf("min=%d\n",min);
        leftsec=leftsec%SEC_PER_MIN;
        printf("leftsec=%d\n",leftsec);
        printf("%ld seconds is %d hour,%d minutes, %d seconds.\n", sec,
                hour,min, leftsec);
        printf("Enter next value (<=0 to quit):\n");
        scanf("%d", &sec);           
    }
    printf("Done!\n");
 
    return 0;
}

搜索更多相关主题的帖子: converts include minutes seconds 
2011-04-20 22:33
mk200
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-4-18
收藏
得分:0 
LONG LONG C99里才有,VC6 TC都没的,而且。我程序开始就打印出了INT_MAX,LONG_MAX。人脑运算时发现没溢出,TC咋就溢出了。我感觉是类型转换的问题。谁能详细解释一下
2011-04-20 22:55
mk200
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-4-18
收藏
得分:0 
以下是引用xjzxylj在2011-4-21 08:49:57的发言:

printf("%d,%ld\n",INT_MAX,LONG_MAX)这句错了吧,我是用VC++2008的,没有溢出。
那句是我出错后加上的调试信息,就是看看INT,和LONG所表达的最大值。9个9是不大于LONG_MAX的
2011-04-21 11:46
快速回复:调不通,求解释
数据加载中...
 
   



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

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