为什么在尝试使I=I*I时会出现“使用未初始化内存'I'”和“使用未初始化局部变量'I'的”错误 我是C++新手,在循环的时候测试,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++中遇到初始化,因此我对该做什么没有任何线索。 包括 使用名称空间std; int main{ 长i=0; 而我

为什么在尝试使I=I*I时会出现“使用未初始化内存'I'”和“使用未初始化局部变量'I'的”错误 我是C++新手,在循环的时候测试,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++中遇到初始化,因此我对该做什么没有任何线索。 包括 使用名称空间std; int main{ 长i=0; 而我,c++,compiler-errors,increment,C++,Compiler Errors,Increment,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;

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。

long long i=i*i;将while循环外部声明的long long i=0;隐藏起来。它是一个完全独立的变量,您正试图将其初始化为自己的值平方。如果要使用在循环外部声明的变量i,请删除redecl声明:

#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,该变量隐藏了在循环之前出现的具有相同名称的变量声明

用声明代替声明

   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中可能会出现溢出,并且在while循环体中可能会出现无限循环。

while (i < 10000000000000000) {
    long long i = i*i;
    cout << 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中可能会出现溢出,并且会得到一个无限循环。

有两个不同的、不同的、完全不相关的变量,都名为i。为什么不打印i*i的结果,而不是用该名称定义一个新变量呢?很长long i=i*i;当你乘以它时,i的值是多少?事实上,在上面的范围内有一个同名的变量,因为它被这个声明掩盖了,所以没有任何变化。你有两个不同的、不同的、完全不相关的变量,都名为i。你为什么不打印i*i的结果,而不是定义一个new变量的名称?long long i=i*i;当你将它相乘时,i的值是多少?事实上,在上面的范围内,有一个同名的变量,它没有改变任何东西,因为它被这个声明掩盖了。谢谢你和0部分我不知道我在想什么谢谢你和0部分我不知道我在想什么