【问题标题】:How does my code get a value for my variable? C++ [closed]我的代码如何获得变量的值? C++ [关闭]
【发布时间】:2021-12-31 11:40:02
【问题描述】:

我正在关注这本书,名为C++ Primer Fifth Edition,它有这样的代码:

#include <iostream>

int main() {
    int currVal = 0;
    int val = 0;
    if (std::cin >> val){
        int cnt = 1;
        while (std::cin >> val){
                if (val == currVal){
                    ++cnt;
                }
                else {
                    std::cout << currVal << " occurs " << cnt << " times " << std::endl;
                    currVal = val;
                    cnt = 1;
                }


        }
        std::cout << currVal << " occurs " << cnt << " times " << std::endl;
    }
    return 0;
}

这段代码告诉我一个数字在用户输入中出现了多少次。

我还不太明白的是,当我给它一个值 0 时,代码如何知道 currVal 是什么,除了最后一个 else 之外,我没有告诉它任何关于当前值的信息陈述。我的问题是代码是否先运行else 代码然后运行if 语句代码?但随后cnt 将无法计算任何内容,因为它总是在else 语句的末尾重置为1。我知道这是非常基本的,但我就是想不出答案。

我在谷歌上找不到答案,也没有在我的书中解释,所以我想也许我可以在这里问。

【问题讨论】:

  • 你可以用你的调试器逐行检查这些代码行,并检查这些值实际上是如何变化的。
  • 第二行有currVal = 0?
  • 我现在开始理解它,但我感到困惑的是,我没有向currVal 提供有关该值的任何更新,并且不知何故它仍然知道当前值是什么。但我想我现在理解得更好了,我会尝试用调试器来解决它以更好地理解它。
  • 应该是if (std::cin &gt;&gt; currVal ){;此代码仅在第一个输入是 0 时才有效; valcurrVal 的初始化也是不必要的......
  • 我不确定我的书是这样说的,当我测试它时,它似乎可以双向工作。

标签: c++


【解决方案1】:

没有。 if() 语句第一次运行时,它会检查零。

currVal 只会在执行 else 时更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-06
    • 2021-01-29
    • 2022-06-16
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2010-09-21
    • 2012-03-17
    相关资源
    最近更新 更多