如何最简洁地将变量初始化为0?

时间:2017-01-17 00:53:06

标签: c++ c variables initialization

我们要说我们要声明三个整数pqr。最佳做法是将它们初始化为0. C 这样做的方法是:

int p, q, r;
p = q = r = 0;

C ++ 这样做的方法是

int p(0), q(0), r(0);

在C中,事情既美好又紧张; 0仅使用一次。相反,C ++调用要求0重复三次 - 每个变量一次。有点冗长。

是否有使用C ++方法初始化变量的更简洁方法,还是每个变量声明所需的初始值?

此外,将C风格初始化与C ++代码混合出来有什么问题吗?谢谢:^)

编辑:修复了正确编译的代码。现在,声明和初始化变量需要两行,所以问题不是很好,但我会把它留给后人。希望有人帮助。

1 个答案:

答案 0 :(得分:8)

  

最佳做法是将它们初始化为0。

这可能甚至是有害的,因为它会使编译器的保护变得沉默。请考虑以下代码:

 int p, q, r;
 p = q = r = 0;

 // ...

 p = FIRST_INDEX;
 r = LAST_INDEX;    // ups, we forget to initialize q with some real value

 // ...
 doSomething(p, q, r);

通常情况下,您会收到如下警告:

  

警告:'q'在此函数中未初始化使用[-Wuninitialized]

但由于q已经初始化,编译器认为没问题。

使用代码

混合声明

如果您有C ++或至少符合C99标准的编译器,那么可以说,通过将变量的声明最接近的移动到第一次使用,可以更好地设计代码:

// some executable code

int p = FIRST_INDEX;
int q = LAST_INDEX;
int r = getSampleCoefficient();

doSomething(p, q, r);

这样,可以完全避免前一个例子中提出的问题,因为声明和实际代码之间没有差距。

你可以在C ++中使用p = q = r = 0;,这只是编码风格的问题。