gpt4 book ai didi

c++ - 应该是本地的变量正在发挥全局作用

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:08 27 4
gpt4 key购买 nike

只是一个免责声明:这是一项家庭作业;我来这里是因为我的(在线)教学不是很灵敏。就是说,我想除了一个问题我已经想通了。

任务是计算以不同方式创建 3 个大小为 100000 的数组中的每一个 1000 个需要多长时间:静态、堆栈和堆。我很确定我有创建数组的正确代码。我遇到的问题是当我将 avgTime 打印到屏幕上时,每个函数输出完全相同的值。因此,如果第一个功能花费了 800 毫秒,那么接下来的两个功能将重复该时间。我认为这与 avgTime 变量的范围有关。有什么想法吗?

#include <iostream>
#include <windows.h>

using namespace std;

void fStaticArray() {
int i = 0;
DWORD avgTime;
while (i<1000){
DWORD before = GetTickCount();
static int staticArray [100000];
i++;
DWORD after = GetTickCount();
avgTime = avgTime + (after - before);
}
cout << "fStaticArray: " << (avgTime/1000) << "ms ";
//avgTime = 0;
}

void fStackArray() {
int i = 0;
DWORD avgTime;
while (i < 1000) {
DWORD before = GetTickCount();
int stackArray [100000];
i++;
DWORD after = GetTickCount();
avgTime = avgTime + (after - before);
}
cout << "fStackArray: " << (avgTime/1000) << "ms ";
}

void fHeapArray() {
int i = 0;
DWORD avgTime;
while (i < 1000) {
DWORD before = GetTickCount();
int * heapArray = new int[100000];
i++;
DWORD after = GetTickCount();
avgTime = avgTime + (after - before);
}
cout << "fHeapArray: " << (avgTime/1000) << "ms ";
}


int main(void) {
fStaticArray();
fStackArray();
fHeapArray();
}

最佳答案

不存在作用域问题。有两件事可以使输出相同。首先,它们具有相同的值(value)。如果它们是并且您不相信,请尝试在所有循环中放置不同的 sleep 或让它们运行不同的数字,您会看到它们打印不同。其次,它们可能不同,但由于两个 int 的除法是 int 所以它们打印相同的值。尝试至少一个除法参数来 float 。在使用两者中的任何一个之前,只需尝试不除法打印 avgValue 。您也可能希望在 while 循环之前和之后放置 GetTickCount()。

关于c++ - 应该是本地的变量正在发挥全局作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319195/

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