为什么在尝试使 i = i*i 时出现错误 "using uninitialized memory 'i'" 和 "uninitialized local variable 'i' used"
Why am I getting the error "using uninitialized memory 'i'" and "uninitialized local variable 'i' used" when trying to make i = i*i
我是 C++ 的新手,正在测试 while
循环和 C++ 的绝对速度及其对我 CPU 的影响,我遇到了以下错误:
Severity Code Description Project File Line Suppression State Warning C6001 Using uninitialized memory 'i'
Severity Code Description Project File Line Suppression State Error 4700 uninitialized local variable 'i' used
我不知道如何阅读错误消息,甚至还没有在 C++ 中遇到过初始化,所以我不知道该怎么做。
#include <iostream>
using namespace std;
int main() {
long long i = 0;
while (i < 10000000000000000) {
long long i = i*i;
cout << i ;
}
cout << i;
return 0;
}
long long i = i * i;
隐藏在 while 循环外声明的 long long i = 0;
。它是一个完全独立的变量,您正试图将它初始化为它自己的平方值。如果要使用在循环外声明的变量 i
,请删除重新声明:
#include <iostream>
using namespace std;
int main() {
long long i = 0;
while (i < 10000000000000000) {
i = i*i;
cout << i ;
}
cout << i;
return 0;
}
请注意,这将是一个无限循环,只会一遍又一遍地打印 0
。
在 while 循环体中
while (i < 10000000000000000) {
long long i = i*i;
cout << i ;
}
您声明了未初始化且具有不确定值的变量 i
,您正试图使用此不确定值来初始化变量本身。
在这个声明中
long long i = i*i;
在初始化器中使用了相同的声明变量 i 隐藏了循环之前出现的同名变量的声明
用声明代替语句
i = i*i;
但最初您应该将变量 i 设置为某个不等于 0 的值,例如设置为 10。
long long i = 10;
否则表达式i * i
的结果总是等于0。
类似
#include <iostream>
using namespace std;
int main() {
long long i = 10;
while (i < 10'000'000'000'000'000) {
i = i*i;
cout << i ;
}
cout << i;
return 0;
}
尽管在选择变量 i
的初始值时应谨慎,因为表达式 i * i
中可能会发生溢出,并且可能会出现无限循环。
我是 C++ 的新手,正在测试 while
循环和 C++ 的绝对速度及其对我 CPU 的影响,我遇到了以下错误:
Severity Code Description Project File Line Suppression State Warning C6001 Using uninitialized memory 'i'
Severity Code Description Project File Line Suppression State Error 4700 uninitialized local variable 'i' used
我不知道如何阅读错误消息,甚至还没有在 C++ 中遇到过初始化,所以我不知道该怎么做。
#include <iostream>
using namespace std;
int main() {
long long i = 0;
while (i < 10000000000000000) {
long long i = i*i;
cout << i ;
}
cout << i;
return 0;
}
long long i = i * i;
隐藏在 while 循环外声明的 long long i = 0;
。它是一个完全独立的变量,您正试图将它初始化为它自己的平方值。如果要使用在循环外声明的变量 i
,请删除重新声明:
#include <iostream>
using namespace std;
int main() {
long long i = 0;
while (i < 10000000000000000) {
i = i*i;
cout << i ;
}
cout << i;
return 0;
}
请注意,这将是一个无限循环,只会一遍又一遍地打印 0
。
在 while 循环体中
while (i < 10000000000000000) {
long long i = i*i;
cout << i ;
}
您声明了未初始化且具有不确定值的变量 i
,您正试图使用此不确定值来初始化变量本身。
在这个声明中
long long i = i*i;
在初始化器中使用了相同的声明变量 i 隐藏了循环之前出现的同名变量的声明
用声明代替语句
i = i*i;
但最初您应该将变量 i 设置为某个不等于 0 的值,例如设置为 10。
long long i = 10;
否则表达式i * i
的结果总是等于0。
类似
#include <iostream>
using namespace std;
int main() {
long long i = 10;
while (i < 10'000'000'000'000'000) {
i = i*i;
cout << i ;
}
cout << i;
return 0;
}
尽管在选择变量 i
的初始值时应谨慎,因为表达式 i * i
中可能会发生溢出,并且可能会出现无限循环。