| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 658 人关注过本帖
标题:天啊,我2了,问一个关于类型转换的问题```
只看楼主 加入收藏
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
天啊,我2了,问一个关于类型转换的问题```
是这样,我有一个随机的变量,unsigned int Temp;

然后,有一个公式: 1000 除 Temp ,得出的结果需要是整数(小数部分省略掉)。

我记得以前学C语言的时候学过这种问题,但是现在几乎忘了```

我是这么写的: Temp=(unsigned int)(1000/Temp);

程序会有一定的几率崩溃```我找不到问题的原因

我说明一下用途:

说明一下,这个Temp是定时器返回的毫秒数(整型)

它统计的时间,是 OpenGL 每帧开始绘制到绘制结束所消耗的时间。

然后我用1000去除,是想得出 FPS 值,然后更改 OpenGL 的每秒刷新次数,这个次数必须是整数,所以我要求 1000 除 Temp 是整数。

程序在运行的时候,如果只是简单统计绘制消耗时间(也就是不算FPS,就是不用1000除),程序正常。

采用公式 Temp=(unsigned int)(1000/Temp); 计算FPS,程序会崩溃(在几秒之后,具体能撑多久是随机的)。

求解。


搜索更多相关主题的帖子: 定时器 C语言 统计 
2011-06-04 17:55
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
程序代码:
#include<stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int main()
{
    unsigned int a;
    srand(time(NULL));
    while(1)
    {
        a = rand()%1000;
        a = (unsigned int)(1000/a);
        printf("%d\n",a);
        Sleep(100);
    }
    return 0;
}

我已经运行了快1分钟了  但是它并没有崩溃

                                         
===========深入<----------------->浅出============
2011-06-04 18:13
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
收藏
得分:0 
回复 2楼 laoyang103
不会吧,难道是人品问题?!?!

我发截图:


图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 hackerjiang 于 2011-6-4 18:24 编辑 ]

(づ ̄ 3 ̄)づ
2011-06-04 18:23
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
二楼的程序没问题,我不知道楼主写的什么程序,楼主的截图看不到程序。
2011-06-04 18:32
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
除零…

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2011-06-04 18:33
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:20 
分母都需要判断是否为0
你2了-o-

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2011-06-04 18:35
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
收藏
得分:0 
回复 6楼 flyue
``````哇操,被你说中了!

添加判断是否为0后,果然木有了问题。

但是我就不解了,按照常理来说,定时器统计的时间不可能是 0 呀~

绘制过程有大量的三维运算,怎么可能是 0 呢?!

不解~~


(づ ̄ 3 ̄)づ
2011-06-04 18:40
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
肯定是你的计时结构有逻辑问题,才会发生这种BUG

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2011-06-04 18:44
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
对呀  除零  楼上犀利  学习啦

                                         
===========深入<----------------->浅出============
2011-06-05 08:34
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
楼主也在开发游戏?

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2011-06-05 08:50
快速回复:天啊,我2了,问一个关于类型转换的问题```
数据加载中...
 
   



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

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