【发布时间】:2022-02-25 01:15:01
【问题描述】:
我正在尝试一个测试并且我编写了这个程序......
#include<iostream>
using namespace std;
main()
{
int arr[5]={1,2,3,5,3}, num=5;
for(int i=0; i< num; i++)
{
for(int j=(i+1); i< num; j++)
{
if (arr[i]==arr[j])
{
cout<<"test";
}
cout<<j<<endl;
}
}
}
嗯... 在下面的代码中,我知道我使用了“i”而不是“j”,所以只是为了创建问题,我使用了这个
for(int j=(i+1); i< num; j++)
而我的程序有问题的部分是-
for(int j=(i+1); i< num; j++)
{
if (arr[i]==arr[j])
{
cout<<"test";
}
cout<<j<<endl;
}
在上面的代码中,当我删除这个 if 块时-
if (arr[i]==arr[j])
{
cout<<"test";
}
程序无限运行...... 但是当我再次放置这个 if 块时,程序在执行一些操作后会自动终止。 I also read about this on this link but it shows example of java
它们显示了负值的原因,但是在我的程序中没有垃圾值来。
【问题讨论】:
-
main()-->int main() -
您正在描述您正在做的事情(添加了这个,删除了那个等),而不是完整地发布实际的新代码,这会导致问题。发布minimal reproducible example 的想法是,我们不必跟随尝试模仿您的描述,并得到我们写错的东西。
-
j迟早会超出您的数组范围,从而导致未定义的行为。未定义的行为可能(但不是必须)导致崩溃。并且崩溃会使操作系统终止程序。 -
你说的“程序在执行一些操作后会自动终止”是什么意思 循环后的代码会被执行吗?没有错误信息吗?返回码是成功还是错误?
-
@eerorika 没有错误信息出现,它只打印 j 值。
标签: c++