【发布时间】:2021-06-10 06:06:02
【问题描述】:
当我尝试运行我的代码时,终端输出一个编译器行,然后变为空白。为什么我的终端会出现空白?又为什么会死循环?
代码如下:
#include <iostream>
using namespace std;
int biSearch(int list[] ,int lenght,int t);
int main()
{
int nums[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int func_return = biSearch(nums,10,7);
cout << func_return << endl;
if(func_return != -1)
{
cout << "index: " << func_return << endl;
}
else
{
cout << "not found" << endl;
}
}
int biSearch(int list[],int lenght,int t)
{
int f = 0;
int l = lenght - 1;
int m = (l - f) / 2;
while(f<=l)
{
if (list[m] == t)
{
return m;
}
else
{
if (t < list[m])
{
l = m - 1;
m = (l - f) / 2;
}
else
{
f = m + 1;
m = (l - f) / 2;
}
}
}
return -1;
}
终端中断前的输出:
Copyright (C) Microsoft Corporation. Todos os direitos reservados.
Experimente a nova plataforma cruzada PowerShell https://aka.ms/pscore6
PS D:\Docs\CodeProjects\Nova pasta> cd "d:\Docs\CodeProjects\Nova pasta\" ; if ($?) { g++ hw.cpp -o hw } ; if ($?) { .\hw }
在这个输出之后,终端只打印一个单一的空白行。为什么我的编译器会进入一个无限循环?
【问题讨论】:
-
在您的工具附带的任何调试器中运行程序(如果您没有调试器,请使用不同的工具进行调试)。当程序看起来卡在循环中时,暂停程序并“单步执行”代码,直到您循环几次或查看程序卡在循环中的原因。使用您所学的知识进行反向工作,以了解程序是如何陷入这种不需要的状态的。放弃一些可以放置“断点”的小测试,以帮助您快速跳转到您想要仔细查看的兴趣点..
-
虽然我相信你相信你的背景故事很有吸引力,但如果它省略了你的历史(或者至少将它移到问题的末尾),你的问题将会得到改善。请参阅How to Ask,尤其是那些谈论直截了当的部分,就好像您正在为忙碌的人写作,他们可能只需要几秒钟就可以确定这个问题是否属于他们的专业领域。 (在这种情况下,他们可能会读到“我正在研究python”——这如何帮助某人确定这个问题需要什么专业知识?)
-
不是你的编译器而是命令
.\hw不会终止。尝试将g++ hw.cpp -o hw作为单个命令
标签: c++ iteration binary-search