我已经开始从learningcpp.com学习c ++。
在解释函数的second lesson中,第一个示例中有一个奇怪的变量初始化:int input{ 0 };
我的IDE(CLion)声明:>预期为“;”在声明的末尾。
如果我运行此代码(使用gcc),则效果很好。如果删除括号也一样。
那么变量名后面的{}
是什么意思?
这是完整的示例:
#include <iostream>
int getValueFromUser()
{
std::cout << "Enter an integer: ";
int input{ 0 };
std::cin >> input;
return input;
}
int main()
{
int num { getValueFromUser() };
std::cout << num << " doubled is: " << num * 2 << '\n';
return 0;
}
答案 0 :(得分:2)
标题具有误导性,也许您想问{0}和= 0之间的区别,而不是为什么要初始化变量。请澄清问题。
int x{0};
将变量初始化为0,等于int x = 0;
。这是C ++ 11中添加的功能。
最佳实践包括初始化在变量中进行。 如果您不进行初始化就保留整数,并且由于它没有默认构造函数,则编译器将不会初始化它。
这意味着到您使用它时,它将有一个未定义的值。如果您先写入,这可能不是问题,但是如果您忘记它未初始化并假定它具有默认值,则可能是一个严重的问题。
以下是在代码中多次看到的小错误:
int n;
int factorial;
cin >> n;
for(int i = 1; i <=n; i++)
factorial *= i; // Whops, factorial started with undefined value
正确的是将其初始化为1。
答案 1 :(得分:1)
要回答标题Why should I use “int input{0};” instead of “int input;”
int input{0};
或int input = 0;
用input
初始化变量0
。 int input;
不会初始化值input
是不确定的。如果稍后在该变量上使用该变量,则可能导致未定义的行为:
int input;
int var = input; // undefined behavior
的更多详细信息