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/