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,我将继续修改了它。