从long long中减去一个int

时间:2012-12-20 22:28:38

标签: c++ int long-integer

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

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

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

该号码是long long类型且n_billions是int吗?

1 个答案:

答案 0 :(得分:3)

你需要确保将数十亿的数字乘以一长条,如下所示:

number -= n_billions*1000000000LL;

否则,n_billions大于2时会出现整数溢出。

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;