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
吗?
答案 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;