我已经开始从learncpp.com学习c ++。
在解释函数的第二课中,第一个示例中有一个奇怪的变量初始化: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}和= 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初始化它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句