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

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

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

会不会是 number 是一种long long类型而 n_billions 是一种int

4

1 回答 1

3

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

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;
}

以上打印 123如预期。

当然这等价于得到一个余数,像这样:

number %= 1000000000;
于 2012-12-20T22:33:02.033 回答