我们要说我们要声明三个整数p
,q
和r
。最佳做法是将它们初始化为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 ++代码混合出来有什么问题吗?谢谢:^)
编辑:修复了正确编译的代码。现在,声明和初始化变量需要两行,所以问题不是很好,但我会把它留给后人。希望有人帮助。
答案 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;
,这只是编码风格的问题。