【问题标题】:C++ incorrect outputC++ 不正确的输出
【发布时间】:2022-11-03 21:27:19
【问题描述】:

我在 C++ 上写了一个简单的程序

#include<iostream>
using namespace std; 

int main() {
    int   number19 , number20  ;
    const int number = 10 ;
    number20 = number + 10 ;
    number19 = number20--;
    cout << number << endl;
    cout << number20 << endl;
    cout << number19 << endl;
    return 0;
}

我认为输出应该是: 10 20 19 但输出是 10 19 20

为什么我得到这样的输出?

【问题讨论】:

  • 你知道post-decrement和pre-decrement的区别吗?
  • 输出正确。为什么你期望不同的输出?也许由于拼写错误,您确实以与您想要的不同顺序输出了数字?
  • 10 19 20 是正确的结果。 number20 在打印前被递减,但 number19 包含递减前的原始值,因为您使用的是后递减。
  • 使用预减量,结果将是 10 19 19,因此问题不在于减量前和减量后之间的差异。
  • @Ilya想一想:如果没有区别,为什么会存在两个单独的操作?

标签: c++ output


【解决方案1】:

前后增量和减量之间存在相当大的差异。

预减量返回新的值,而后递减返回老的价值。

这意味着你声明

number19 = number20--;

真的相当于:

{
    int old_number20 = number20;
    number20 = number20 - 1;

    number19 = old_number20;
}

任何体面的初学者学习资源都应该有这些信息。

【讨论】:

    【解决方案2】:

    基本上,您需要了解减量运算符的工作原理。

    number19 = number20--;
    

    正在做一些不同于

    number19 = number20 - 1;
    

    后者似乎是您所期望的。

    简而言之,number20-- 是一个表达式,它实际上改变了变量 number20 的值,但计算结果为原始值,而 number20 - 1 是一个表达式,它只返回您想要的值而不触及变量。

    还有另一种形式的递减,--number20,它将改变变量的值并计算为新的价值。

    【讨论】:

      【解决方案3】:

      非常感谢大家!!!我将更深入地研究post和pre-decrement。

      【讨论】:

        猜你喜欢
        • 2018-09-13
        • 1970-01-01
        • 1970-01-01
        • 2021-06-24
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        • 2015-04-09
        • 1970-01-01
        相关资源
        最近更新 更多