这会有用吗?
double a = 2.0,
x, y, z = 0.50;
Run Code Online (Sandbox Code Playgroud)
第二行代码是否正常工作并将x,y,z初始化为0.50?
Ker*_* SB 12
您的代码叶x和y未初始化.但是,稍微重新排列可以避免重复初始值:
double a = 2.0, x = 0.50, y = x, z = x;
Run Code Online (Sandbox Code Playgroud)
声明中先前声明的变量属于后面的声明范围.
当评估一个初始化程序可能具有非平凡的运行时成本时,这有时特别有用.例如,在以下嵌套循环中,其中m是multimap:
for (auto it = m.begin(), kt = it, e = m.end(); it != e; it = kt)
{ // ^^^^^^^^^^^^^^^^^^^^^^^
// handle partition
for (; kt != e && kt->first == it->first; ++kt)
{
// ... handle equal-range
}
}
Run Code Online (Sandbox Code Playgroud)
不,只能z进行初始化。您必须这样编写:
double x = 0.50, y = x, z = x;
Run Code Online (Sandbox Code Playgroud)
但是您可以编写这样的作业:
double x, y, z;
x = y = z = 0.50;
Run Code Online (Sandbox Code Playgroud)
不,只有z会被初始化。
如果您之后尝试打印它们
std::cout << a << " " << x << " " << y << " " << z;
你会从编译器那里得到这样的警告:
警告:在此函数中使用了未初始化的“x”
为了清楚起见,我将使用 Rabbid76 建议的第二个选项:
double x, y, z;
x = y = z = 0.50;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7977 次 |
| 最近记录: |