加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 整数溢出错误

发布时间:2020-12-16 10:42:27 所属栏目:百科 来源:网络整理
导读:这是我的OpenGL代码的一部分,我得到一个错误: struct Ball { float x; float y; float rot; float dir; bool rmv; Ball* next;};Ball* curBall;void addBall() { if (balls==NULL) { balls=new Ball; balls-next=NULL; curBall=balls; } else { curBall-nex
这是我的OpenGL代码的一部分,我得到一个错误:

struct Ball {
    float x;
    float y;
    float rot;
    float dir;
    bool rmv;
    Ball* next;
};

Ball* curBall;
void addBall() {
    if (balls==NULL) {
        balls=new Ball;
        balls->next=NULL;
        curBall=balls;
    } else {
        curBall->next=new Ball;
        curBall=curBall->next;
        curBall->next=NULL;
    }
    curBall->x=((float)rand()/(float)(RAND_MAX+1))*(ww-1) +1;
    curBall->y=((float)rand()/(float)(RAND_MAX+1))*(wh-1) +1;
    curBall->dir=((float)rand()/(float)(RAND_MAX+1))*(2*PI-1) +1;
    curBall->rot=((float)rand()/(float)(RAND_MAX+1))*(359) +1;
    curBall->rmv=false;
}
error :
In function ‘void addBall()’:
file.cpp:120: warning: integer overflow in expression
file.cpp:121: warning: integer overflow in expression
file.cpp:122: warning: integer overflow in expression
file.cpp:123: warning: integer overflow in expression

解决方法

尝试在添加之前将RAND_MAX转换为浮点数.

curBall->x=((float)rand()/( ((float)RAND_MAX) +1))*(ww-1) +1;

等等. RAND_MAX通常等于INT_MAX,这是整数可以容纳的最大值,因此在它仍被视为整数时将其加1会将其推到整数限制之上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读