gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:16:54 26 4
gpt4 key购买 nike

假设我们要声明三个整数,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++ 代码混合使用有什么问题吗?谢谢 :^)

编辑:固定代码以正确编译。现在,它需要两行来声明和初始化变量,所以这个问题不是很好,但我会留在这里留给后人。希望对某人有所帮助。

最佳答案

Best practice is to initialize them to 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);

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

warning: 'q' is used uninitialized in this function [-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;,这只是编码风格的问题。

关于c++ - 如何最简洁地将变量初始化为0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41687426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com