草庐IT

overflow

全部标签

c++ - 双溢出?

我一直想知道如果double达到它的最大值会发生什么,所以我决定写这段代码:#include#include#defineUINT64_SIZE18446744073709551615intmain(){std::uint64_ti=UINT64_SIZE;doubled1=((double)(i+1))/UINT64_SIZE;doubled2=(((double)(i))/UINT64_SIZE)*16;doubled3=((double)(i*16))/UINT64_SIZE;std::cout我期待这样的事情:0160但这是我的输出:0161这是怎么回事?为什么d3和d1的值不

c++ - 当整数变量不能保存它不应该保存的值时,是否在 C++ 中的运行时捕获了 overflow_error

我正在学习C++,我试图编写这个函数来找到可以适合整数类型的最大斐波那契整数:voidfindFibThatFitsInAnInt(){intn1=1;intn2=1;intfib=0;try{while(true){fib=n1+n2;n1=n2;n2=fib;cout但问题是overflow_error根本没有被捕获。我知道这样做的其他方法:我知道我可以这样写:while(fib>=0){fib=n1+n2;n1=n2;n2=fib;cout并且因为fib只是一个“int”而不是一个unsignedint,所以当它被分配一个大于int类型容量的值时,它最终会变成问题是:在C++中是

c++ - C/C++ 中两个 INT_MAX 数字的乘积不正确

在我的例子中,两个INT_MAX数字的乘积是296447233,这是不正确的。longlongintproduct=0;product=2137483647*2137483647;printf("product:%lli\n",product);我做错了什么,如何纠正??谢谢! 最佳答案 你的两个2137483647都是int类型。所以他们保持那种类型并溢出。让它们longlong:product=2137483647LL*2137483647LL;或投:product=(longlong)2137483647*2137483647

c++ - 如何计算形式为 (a*b)%c 的模数?

如何计算形式为(a*b)%c的模数?我想计算两个几乎处于溢出阶段的int数的乘积...这里c也是int 最佳答案 (a*b)%c==((a%c)*(b%c))%c 关于c++-如何计算形式为(a*b)%c的模数?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5915808/

c++ - C++中的自动溢出检测?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:BestwaytodetectintegeroverflowinC/C++当我在C++中使用大量数字编写代码时,我常常无法判断何时发生溢出,即使我使用的是longlong或其他64位数据类型。有没有比观察错误值更有效的方法来检测何时发生溢出?

c++ - Valgrind 报告 "brk segment overflow in thread #1"

这个问题在这里已经有了答案:Valgrindreportingasegmentoverflow(5个答案)关闭5年前。我想知道这条消息意味着什么:==18151==brksegmentoverflowinthread#1:can'tgrowto0x4a26000请注意,代码运行良好并且输出正确。我应该忽略这条消息吗?这是什么意思?

c++ - std::map 在低内存情况下导致 "stack overflow"

此应用程序正在使用C++在WindowsXP上的VS2010中开发。当计算机在物理内存上运行时非常低(并且页面文件被禁用,因为它是我们的测试用例),这行代码:std::map>MyMap;在malloc.c中导致“堆栈溢出”错误'returnHeapAlloc(_crtheap,0,size?size:1);'MyApp.exe中0x7c90e8e5处的未处理异常:0xC00000FD:堆栈溢出。此调用是从应用程序的线程之一进行的。如果内存不足是错误,它应该抛出bad_alloc谁能告诉我这里可能是什么原因。编辑:这是实际堆栈的样子ntdll.dll!7c90e8e5()[Frames

c++ - (如何)你如何处理 C++ 代码中可能出现的整数溢出?

时不时地,尤其是在对某些代码库进行64位构建时,我注意到在很多情况下都可能出现整数溢出。最常见的情况是我做这样的事情://CreatesaQPixmapoutofsomeblockofdata;thisfunctioncomesfromlibraryAQPixmapcreateFromData(constchar*data,unsignedintlen);conststd::vectorbuf=createScreenShot();returncreateFromData(&buf[0],buf.size());//事情是std::vector::size()很好地返回了一个size_

c++ - libpng png_set_add_alpha | png_set_filler 错误 : sequential row overflow

我正在尝试使用C读取PNG文件以用于OpenCL。OpenCL不支持24位RGB图像,因此我需要将数据从RGB扩展到RGBA。我使用的PNG都是24位的,因此可以避免头痛。我曾尝试使用png_set_filler和png_set_add_alpha,我认为它们大致相同来解决问题,但它们都会导致此错误:libpngerror:sequentialrowoverflow这里是完整的函数:intLoadPNG24(unsignedchar**pixelBuffer,constchar*filename,unsignedint*width,unsignedint*height){png_byt

c++ - gcc "overflow in expression"而等效等效表达式工作正常

这是我的代码#includestaticconstunsignedlonglongintxx=(36*36*36*36)*(36*36*36*36);staticconstunsignedlonglonginty=36*36*36*36;staticconstunsignedlonglongintyy=y*y;intmain(){std::cout这是编译输出#g++-std=c++11test.cpp-otesttest.cpp:2:62:warning:integeroverflowinexpression[-Woverflow]staticconstunsignedlonglon