c++ - 从 long long 中减去 int

标签 c++ int long-integer

if(number > 999999999)
{
    int n_billions;
    n_billions = number/1000000000;
    cout << number;

    number -= n_billions*1000000000;
    cout << number;
}

如果我使 number = 9000000000(九十亿),我不明白为什么在运行程序后变量 number 而不是 0 是 8589934592。

难道number是long long类型,而n_billions是int类型?

最佳答案

您需要确保将十亿个数乘以一个 long long,如下所示:

number -= n_billions*1000000000LL;

否则,您会遇到大于 2 的 n_billions 整数溢出。

long long number = 9000000123LL;
if(number > 999999999) {
    int n_billions;
    n_billions = number/1000000000;
    cout << number << endl;

    number -= n_billions*1000000000LL;
    cout << number << endl;
}

以上prints 123 正如预期的那样。

当然,这相当于获得余数,如下所示:

number %= 1000000000;

关于c++ - 从 long long 中减去 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13981585/

相关文章:

c++ - 为什么 int arr[]={0,3,2,4,5,6,7}; 给出错误和 int arr[7]={0,3,2,4,5,6,7};不是

c++ - 在带有 VS 2008 的 Qt 4.8.5 网络示例中找不到 ui_chatdialog.h

python - 我如何在 python 中将 int16 打包成字节

c++ - 将 50 位二进制值转换为整数

java无法处理32位数字

c++ - 在 R 中编译 C++ 代码不再有效

c++ - 如何在所有者绘制的 MFC CMenu 派生菜单中显示复选框?

swift - Swift 中所有数字都遵循哪些协议(protocol)?

c# - 使用 uint 或 int

python - Long Int 文字 - 语法无效?