CodeBlocks和Visual Studio 2019中的不同结果
Different results in CodeBlocks and Visual Studio 2019
我用CodeBlocks编写了这个程序:
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int main()
{
ifstream is;
is.open("game.inp");
int n,a[100];
is>>n;
for (int i=0; i<n; i++)
is>>a[i];
is.close();
int game[100];
int kt=0;
for (int i=0; i<n; i++)
{
for (int j=3; j<a[i]+1; j++)
{
if ((a[i]%j)==0)
{
int *x = find(begin(game),end(game),j); //ktra uoc hien tai da co trong mang hay chua, k co thi ms them
if (x==end(game))
{
game[kt]=j;
kt++;
}
}
}
}
int kq=0;
for (int i=0; i<kt; i++)
{
int d=0;
for (int j=0; j<n; j++)
{
if ((a[j]%game[i])==0)
d++;
}
if (d>kq)
kq=d;
}
ofstream o;
o.open("game.out");
o<<kq;
o.close();
return 0;
}
结果不正确。然后我决定将这些代码复制到Visual Studio 2019,它给了我正确的结果。我不知道发生了什么。我将相同的代码从CodeBlocks复制到VS,结果完全不同。
欢迎来到未定义行为的美妙世界。
在初始化数组之前game
使用数组的内容。局部变量未初始化,其内容不确定,使用不确定值会导致未定义的行为。
如果您希望将数组初始化为全零,则需要显式执行此操作:
int game[100] = { 0 };
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- valgrind-hellgrind与泄漏检查的结果不同
- 用C++20 fmt限制结果的总大小
- 如何返回一个类的两个对象相加的结果
- 如何在MS Visual Studio 2019中运行QT UI
- 为什么它不适用于Visual 2019的原因
- Visual Studio 2019:插入多个C++风格的单行注释
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 序列化,没有库的整数,得到奇怪的结果
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 将IBM Rhapsody模型集成到VS 2019中
- 在更改for循环的第三部分后,未使用for循环结果
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 使用++运算符会导致意外的结果
- 视觉studo 2019中的漫画和静态/动态绑定
- CodeBlocks和Visual Studio 2019中的不同结果