C++ While循环,将变量递增到一个点

C++ While循环,将变量递增到一个点,c++,while-loop,C++,While Loop,我这个程序的目标是从用户那里获取值“y”的输入,然后将该值乘以0、1、2、3、4、5、6、7、8、9,然后打印10个结果。现在,当用户输入“y”的值时,程序只返回一个零列表。知道我做错了什么吗 #include <iostream> using namespace std; int main(){ int x; int y; int z; x = 0; z = x * y; cout << "enter y" <

我这个程序的目标是从用户那里获取值“y”的输入,然后将该值乘以0、1、2、3、4、5、6、7、8、9,然后打印10个结果。现在,当用户输入“y”的值时,程序只返回一个零列表。知道我做错了什么吗

#include <iostream>

using namespace std;

int main(){

    int x;
    int y;
    int z;
    x = 0;
    z = x * y;
    cout << "enter y" << endl;
    cin >> y;
    while (x < 10) {
        cout << z << endl;
        x = x + 1;
    }

}

你的问题是,你实际上没有在循环内计算z,所以它总是你在循环外计算的值。语句和表达式不能追溯


但是你有一个比这更糟糕的问题,因为你在初始化之前使用y,这会导致未定义的行为。

你需要将y输入的位置更改为在计算z之前,z应该在循环内部。

语句z=x*y应该在while循环内部,它才能工作。
现在发生的事情是,每次它打印相同的z值时,它最初计算为x,x是0,y是一些垃圾值,因为它尚未初始化为0。代码中出现的第一个问题是,试图通过x乘以y来分配z,但y没有分配给某个值=>错误!这意味着您应该在分配z之前获得用户输入

您可能想知道为什么会得到10个“0”输出:在循环中,您只将分配给z的值打印到控制台,但z在之前已分配,并且在重复过程中未更改

#include <iostream>

using namespace std;

int main(){

    int x;
    int y;
    int z;
    x = 0;
    z = x * y;                 // y is never assigned to a value
    cout << "enter y" << endl;
    cin >> y;                  // y got assigned here!
    while (x < 10) {
        cout << z << endl;     // z stays the same in the loop
        x = x + 1;
    }
}

启用更多的编译器警告并重新阅读C++书籍的前几章。甚至在循环中,你甚至没有改变变量Z。你还指望什么?