C中的MAXINT溢出

 那是电话卡技术的 发布于 2022-12-20 11:31

定义最大整数变量时,我得到一个错误:

overflow in expression; result is 2147483647 with type 'int' [-Winteger-overflow]

代码中的行:

const int MAXINT = (1 << (8*sizeof(int)-1))-1;

使用语言:C cpu:64bit(代码可能用32位机器编写)

拜托,该怎么办?

1 个回答
  • 此处可能发生溢出

    (1 << (8*sizeof(int)-1))
    

    而不是减1(溢出后):

    const int MAXINT = ((1 << (8*sizeof(int)-2))-1)*2 + 1
    

    注意:最好使用CHAR_BIT8.但那通常会带来INT_MAX(@Jonathan Leffler)并且代码可以使用(@mafso)

    const int MAXINT = INT_MAX;
    

    2022-12-20 11:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有