Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;初始化变量的值,即使我将其留空,为什么会发生这种情况?_C++_Initialization - Fatal编程技术网

C++ C++;初始化变量的值,即使我将其留空,为什么会发生这种情况?

C++ C++;初始化变量的值,即使我将其留空,为什么会发生这种情况?,c++,initialization,C++,Initialization,出于某种原因,final_sum的值是16,但我没有初始化该变量的值,为什么?不应该以0开头吗 #include <iostream> #include <iomanip> #include <cmath> using namespace std; int main() { int n, sum, final_sum; cout<<"ff: "<<final_sum<<endl;

出于某种原因,
final_sum
的值是16,但我没有初始化该变量的值,为什么?不应该以
0
开头吗

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

int main()
{
    int n, sum, final_sum;

    cout<<"ff: "<<final_sum<<endl;
    cout<<"Input the value for n: ";
    cin>>n;

    for(int i=1; i<=n; i++){
        sum += i;
        final_sum += sum;
        cout<<"sum: "<<sum<<endl;
        cout<<"final sum: "<<final_sum<<endl<<endl;
    }
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
整数n,和,最终和;
库特
不应以0开头

否,其初始值未定义。请参阅

具有自动存储持续时间的对象(及其子对象)初始化为不确定值

如果你这样做

 int final_sum{}; 

变量中将有一个
0


我建议您使用
-Wuninitialized
(或者更好的
-Wall
)。如果您忘记了初始化,编译器将发出警告

不应以0开头

否,其初始值未定义。请参阅

具有自动存储持续时间的对象(及其子对象)初始化为不确定值

如果你这样做

 int final_sum{}; 

变量中将有一个
0



我建议您使用
-Wuninitialized
(或者更好的
-Wall
)。如果您忘记了初始化,编译器会发出警告。如果您在读取/使用变量之前没有初始化它,它的
未定义行为
。它的值可以是任何值,它是不可预测的,并且总是一个坏主意。使用

int final_sum = 0;
初始化它

发件人:

未初始化变量中的值可以是任何值–它是 不可预测,并且每次运行程序时可能会有所不同。 读取未初始化变量的值是未定义的行为 –这总是一个坏主意。它必须用一个值初始化 在你可以使用它之前

它们唯一有用的地方是当你准备阅读 变量从某个输入流输入

编辑:有些人可能会问“为什么我的变量还打印
0
,即使我没有初始化它?”

发信人:

这是因为具有自动存储持续时间的变量不可用 在C++中自动初始化为零。C++中,你不必付费。 您不需要的,自动初始化变量需要 时间(设置为零)内存位置最终减少到机器 然后转换为电信号的指令 控制物理位)

所以当你这样做的时候:

int final_sum;
final_sum
只是保留了一个内存位置,该位置中当前的任何内容都将由
cout
打印出来。恰好在该位置有一个大的
0


更多信息:

如果在读取/使用变量之前不初始化它,它的
未定义的行为
。它的值可以是任何值,它是不可预测的,并且总是一个坏主意。使用

int final_sum = 0;
初始化它

发件人:

未初始化变量中的值可以是任何值–它是 不可预测,并且每次运行程序时可能会有所不同。 读取未初始化变量的值是未定义的行为 –这总是一个坏主意。它必须用一个值初始化 在你可以使用它之前

它们唯一有用的地方是当你准备阅读 变量从某个输入流输入

编辑:有些人可能会问“为什么我的变量还打印
0
,即使我没有初始化它?”

发信人:

这是因为具有自动存储持续时间的变量不可用 在C++中自动初始化为零。C++中,你不必付费。 您不需要的,自动初始化变量需要 时间(设置为零)内存位置最终减少到机器 然后转换为电信号的指令 控制物理位)

所以当你这样做的时候:

int final_sum;
final_sum
只是保留了一个内存位置,该位置中当前的任何内容都将由
cout
打印出来。恰好在该位置有一个大的
0


更多信息:

全局声明变量会起作用

int final_sum;
int main() {
     your code ...
}

int final_sum = 0;
int main() {
    your code here ...
}

但是,您可能不想使用全局变量,因此始终建议使用某些值初始化变量。

全局声明变量可以完成此任务

int final_sum;
int main() {
     your code ...
}

int final_sum = 0;
int main() {
    your code here ...
}

但是,您可能不想使用全局变量,建议始终使用某些值初始化变量。

未初始化变量的值可以是任何值。读取其值也是未定义的行为。未初始化变量的值可以是任何值。读取其值也是未定义的行为。Alright、 谢谢you@soup如果您找到了答案,请单击最有用答案旁边的复选标记,将您的问题标记为已解决。好的,谢谢you@soup如果您找到了答案,请单击最有用答案旁边的复选标记,将您的问题标记为已解决。好的,谢谢。如果您没有初始化变量,则其未定义的行为-这不是正确。除非您在初始化之前尝试读取其值,否则使用未初始化的变量是可以的。@Evg-ah,我将对其进行修改。好的,多亏了洛蒂,如果您不初始化变量,其未定义的行为-这是不正确的。使用未初始化的变量是可以的,除非您在初始化之前尝试读取其值。@Evg-ah,我将继续修改了它。