当前位置: 首页 > 知识库问答 >
问题:

我如何解决c中的int溢出问题?

师承弼
2023-03-14

在C中,是否可以在不造成整数溢出的情况下执行以下操作?我的答案需要是一个整数,稍后在程序中使用。代码打印为-337。正确答案应该是2014。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {
   int i;
   i = (10000 * 735625 + 14780)/3652425;
   printf("%d",i);
   return 0;
}

共有2个答案

楚俊逸
2023-03-14
i = (int)((10000.0 * 735625.0 + 14780.0)/3652425.0);

printf("%d",i);

勇敢

东云
2023-03-14

根据通常的算术转换,当< code>10000 * 735625 14780(超出< code>int的范围)试图保存到< code>int中时,它将溢出。

对操作数执行整数提升,如下所示:

    < li >如果任一操作数是< code >无符号长整型类型,则另一个操作数转换为< code >无符号长整型类型。 < li >如果不满足前面的条件,并且其中一个操作数是< code>long类型,另一个是< code>unsigned int类型,则两个操作数都转换为< code>unsigned long类型。 < li >如果不满足前面两个条件,并且其中一个操作数是< code>long类型,则另一个操作数转换为< code>long类型。 < li >如果不满足前面三个条件,并且其中一个操作数是< code>unsigned int类型,则另一个操作数转换为< code>unsigned int类型。 < li >如果前面的条件都不满足,两个操作数都转换为< code>int类型。

要解决这个问题,您需要使用long(范围更大)代替。

正如@JoachimIsaksson所建议的,一种简单的方法是将LL放在10000之后,以long long的精度进行计算:

i = ( 10000LL * 735625 + 14780)/3652425;

现场观看:< code > http://ideone . com/pa 2 PVM

 类似资料:
  • html 代码如上, 我的打印纸张宽度是 176mm, 但是因为我设置了 child2 left:500mm 导致我的纸张被缩放了 理想情况 用 js 的话 我需要判断内部的内容 是否溢出,然后再设置 display:none 如何用 css 去从根节点解决这种问题?

  • 本文向大家介绍linux解决Tomcat内存溢出的问题,包括了linux解决Tomcat内存溢出的问题的使用技巧和注意事项,需要的朋友参考一下 Tomcat本身不能直接在计算机上运行,需要依赖于操作系统和一个JAVA虚拟机。JAVA程序启动时JVM会分配一个初始内存和最大内存给程序。当程序需要的内存超出内存的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。 一、常见的Java内存溢出有以下三

  • 本文向大家介绍解决Tensorflow sess.run导致的内存溢出问题,包括了解决Tensorflow sess.run导致的内存溢出问题的使用技巧和注意事项,需要的朋友参考一下 下面是调用模型进行批量测试的代码(出现溢出),开始以为导致溢出的原因是数据读入方式问题引起的,用了tf , PIL和cv等方式读入图片数据,发现越来越慢,内存占用飙升,调试时发现是sess.run这里出了问题(随着f

  • 本文向大家介绍JVM Metaspace内存溢出问题解决方案,包括了JVM Metaspace内存溢出问题解决方案的使用技巧和注意事项,需要的朋友参考一下 一. 现象 前段时间公司线上环境的一个Java应用因为OOM的异常报警,导致整个服务不可用被拉出集群,本地模拟重现的现象如下: 当时的解决方案是增加metaspace的容量:-XX:MaxMetaspaceSize=500m,从原来默认的256

  • 本文向大家介绍C#中Datetimepicker出现问题的解决方法,包括了C#中Datetimepicker出现问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 发现问题 DateTimePicker控件是用来显示和修改日期时间的,但默认只显示日期和修改日期。最近在使用中就遇到了一个问题,下面来随着小编一起看看吧 前几天公司用的物料管理系统出现了一个很奇怪的问题 具体的现象是: 10月31号

  • 启动错误 ApplicationContext.若要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2019-10-17 15:44:43.968错误10460--[main]O.S.Boot.SpringApplication:应用程序运行失败 我的pom.xml: