c++ - 如何检查 C/C++ 中的整数溢出?

标签 c++ c

我想知道如何确定 C/C++ 中的溢出。如果我输入的整数是 9999999999999999999999 ,这是一个非常大的数字,如果我运行下面的代码,我将得到垃圾输出。

#include <stdio.h>

int main(){
    int a;
    scanf("%d",&a);
    printf("%d",a);
    return 0;
}

有什么办法可以知道,如果输入是一个大数字,我可以输出“输入太大”。

请注意,我已经检查了How to detect integer overflow? .但问题与我的不同。

最佳答案

在您的情况下,读取字符串中的输入,然后根据长度做出决定。您可以在字符串中编码整数、long long 等的限制,如果输入的长度(数字的数量)等于或小于您的字符串限制之一,则通过比较移动一个,如果它小于字符串表示限制,您可以安全地将其转换为整数类型。

更新

或者,如果您愿意,可以按照 David Brown 的建议在 C++ 中使用流运算符...

关于c++ - 如何检查 C/C++ 中的整数溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19621737/

相关文章:

c - 在 c 中读取名称值对的最佳方法

c++ - 简单命令行程序中的段错误

ios - 线程 1 : EXC_BAD_ACCESS in Xcode with C code

c++ - 具有初始化参数的函数定义和具有较少参数的函数调用

c++ - 以下会不会引起内存问题?

c++ - Visual Studio中组织C++代码的原则是什么?

c++ - 在运算符重载中使用 "const"作为参数

c++ - 运算符未解析为运算符函数 c++

c - 没有括号的类似函数的 C 宏

c++ - 编码 x264(libx264) 原始 yuv 帧数据