c++ - 查找整数值并将该值传递给循环中的另一个整数但是整数被重置为初始值

标签 c++

找到一个整数值并将该值传递给循环中的另一个整数。但是一旦我移动到循环中的下一个点,整数值就会重置为初始值。我无法找到原因。

#include <iostream>
using namespace std;

int main()
{
    int t,n,z=0;
    int k=0;
    cin>>t;
    for(int i=0;i<t;i++){
        cout<<"k before="<<k<<endl;
        int z=i+2+k;
        int k=z;
        cout <<"k after="<<k<<endl;
        cout <<z<<endl;
    }
}

这里,对于 i=0,z=2 和 k=2。但在下一次迭代中,k 再次变为 0。

最佳答案

您正在使用您在 for 循环体内声明的那些隐藏外部 zk。所以“k after”指的是新声明的k,“k before”指的是外部作用域中的那个。

写作

z=i+2+k;
k=z;

在循环中就是修复。

有些编译器会警告您 - 您是否已将警告设置为适当的级别?

关于c++ - 查找整数值并将该值传递给循环中的另一个整数但是整数被重置为初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57851623/

相关文章:

c++ - 为什么 lambda 返回 bool 值?

c++ - 如何使用 QT RegExp 从字符串中提取子字符串列表

c++ - 为什么我可以在 C 而不是 C++ 中设置一个匿名枚举等于另一个?

c++ - C 宏 : how to hide __at keyword?

c++ - InterlockedExchange 和内存可见性

c++ - C 逗号运算符的使用

python - or-tools:简单的问题在 cpp 中不可行,但在 python 中有效

c++ - 如何在模板类中使用 lambda 作为 STL Compare 方法?

c++ - 如何区分具有相同参数的两个构造函数?

c++ - 为什么 `std::string::reserve()` 没有保留我指定的确切空间量?