【发布时间】:2021-07-15 21:54:15
【问题描述】:
我不确定如何提出这个问题,所以我试着用这种方式来描述它...... 会这样吗:
#include <iostream>
int main()
{
int i;
while (true)
for (i = 0; i < 100; i++)
std::cout << i << '\n';
return 0;
}
跑得比这还快?:
#include <iostream>
int main()
{
while (true)
for (int i = 0; i < 100; i++)
std::cout << i << '\n';
return 0;
}
也许问题可以这样形成:声明一个变量(不初始化它)会消耗我的资源吗?
【问题讨论】:
-
没有。声明一个变量(非类类型)本身不会消耗任何资源,至少在启用优化的情况下(关心禁用操作的资源是没有意义的)。以后使用该变量的操作可能会消耗一些资源,如果它们有助于在假设条件下的可观察行为。
-
请比较godbolt.org/z/j8dr5hsz1和godbolt.org/z/T1YfT63sW,这将向您展示代码是如何在各种架构和编译器上编译的。
-
使用无限循环来问效率问题很奇怪。
-
无限循环应该很容易表示 int i 被多次声明的事实