整数计数{0}。我可以在 C++ 中使用花括号初始化变量吗?

int count{0}. Can I initialize a variable using curly braces in C++?

我是计算机科学理学士的第一年。我收到了教授对我最近提交的作业的评论。我将一个 int 变量初始化为零:int count{0};。课程中分配给我们的书只给出了一种使用赋值语句初始化变量的方法。 整数计数 = 0;

不记得在哪里学的花括号方法初始化变量了。据我的教授说,这不是合法的方式。我的程序在 Atom 和在线调试器上运行时没有任何错误。我总是检查我的程序是否存在来自两个不同平台的错误。 所以,我很困惑是我的方法有误被编译器遗漏了还是这个方法是合法的但不被认为是标准的。

任何澄清都会有所帮助。还有关于调试的良好编程实践的任何建议,所以它不会再次发生,因为我从 10 分作业中失去了 4 分。

下面是如何用零初始化 int 类型的变量计数

int count = 0;
int count = { 0 };
int count = ( 0 );
int count{ 0 };
int count( 0 );
int count = {};
int count{};

你不能写

int count();

因为这将是一个函数声明。

如果要使用说明符 auto 那么这些声明

auto count = { 0 };
auto count = {};

必须从上面的列表中排除,因为在这种情况下,在第一个声明中,变量 count 的类型为 std::initializer_list<int>,而在第二个声明中,无法推导出变量的类型。

注意在C++ 11中引入了带括号列表的标量对象初始化。