coosh 2022-11-09 16:18 采纳率: 100%
浏览 56
已结题

C++算术溢出(VS2019,C++17)

问题遇到的现象和发生背景

C++算术溢出(VS2019,C++17)

用代码块功能插入代码,请勿粘贴截图
#include <iostream>
using namespace std;

int main() {
    long long a = 4'294'967'296L;  // 正确
    cout << a << endl;
    long long b = 16777216L*4096L;  // 乘法结果得到0。这是为什么? 
    cout << b << endl;
    return 0;
}
运行结果及报错内容

4294967296
0

我的解答思路和尝试过的方法

试过把编译器改为x64,但问题依旧

  • 写回答

5条回答 默认 最新

  • 浪客 2022-11-09 16:26
    关注

    16777216L*4096L;
    2个数按long进行计算,结果赋值给long long。
    而上面式子按long运算的结果是溢出为0的。
    先把其中一个给long long,然后在计算就不会溢出了。
    long long b = 16777216L;
    b *= 4096L;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 创建了问题 11月9日

悬赏问题

  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥15 ensp路由器启动不了一直报#
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了