【问题标题】:Substracting an int from long long从 long long 中减去一个 int
【发布时间】:2012-12-20 22:28:37
【问题描述】:
if(number > 999999999)
{
    int n_billions;
    n_billions = number/1000000000;
    cout << number;

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

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

难道这个数字是 long long 类型而 n_billions 是 int 吗?

【问题讨论】:

  • 简短的回答:是的。长答案:是的。
  • number -= n_billions*1000000000LL;
  • 但我之前问过是否可以将 int 减去 long long,其他人告诉我强制转换是自动的。
  • @Paolo :是的,您可以从 long long 中减去一个 int,但您不一定将 结果 存储到 int 中。
  • 可以使用余数运算符而不是乘法和减法:number = number % 1000000000,可以更简洁地写成number %= 1000000000;

标签: c++ int long-integer


【解决方案1】:

您需要确保将十亿的数量乘以 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;
}

以上prints123符合预期。

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

number %= 1000000000;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多