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

tar*_*ark 2 c++ variables initialization braced-init-list

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

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

任何澄清都会有帮助。还有关于调试良好编程实践的任何建议,这样就不会再发生这种情况了,因为我在 10 分作业中丢了 4 分。

Vla*_*cow 5

以下是如何将 int 类型的变量 count 初始化为零

int count = 0;
int count = { 0 };
int count = ( 0 );
int count{ 0 };
int count( 0 );
int count = {};
int count{};
Run Code Online (Sandbox Code Playgroud)

你可能不会写

int count();
Run Code Online (Sandbox Code Playgroud)

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

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

auto count = { 0 };
auto count = {};
Run Code Online (Sandbox Code Playgroud)

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

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