c++ - 为什么没有影响的上升整数会使我的程序崩溃
问题描述
这是我的代码,它按预期工作。但是在添加一个上升整数后(即使它对代码没有影响)我的代码不能按预期工作
#include <iostream>
int i;
int j = 0;
int nums[] = {};
int co = 0;
void rq1() //rq = request
{
std::cout << ("How many numbers?");
std::cin >> i;
}
void rq2 ()
{
int n2 = 0;
for (int n = 1; n <= i; n++)
{
std::cout << n2 + 1 << (". number?");
std::cin >> nums[n2];
n2++;
}
}
void sort ()
{
for (int n4 = 0; n4 < i; n4++)
{
int k = j + 1;
for (int n3 = 1; n3 < i; n3++)
{
if (nums[j]==nums[k])
{
if (j<k) {std::cout << j << "," << k << std::endl; k++;}
else {k++; return;}
}
else {k++;}
}
j++;
}
}
int main()
{
rq1();
rq2();
sort();
}
输入: 4 个数字 (1,2,1,2) 输出: (0 , 2) (1 , 3)
但添加co++后,输出为 (0,2) 但预期输出为 (0 , 2) (1 , 3)
{
for (int n4 = 0; n4 < i; n4++ )
{
int k = j + 1;
for (int n3 = 1; n3 < i; n3++)
{
if (nums[j]==nums[k])
{
if (j<k) {std::cout << j << "," << k << std::endl; k++; co++;}
else {k++; return;}
}
else {k++;}
}
j++;
}
}
我不知道为什么我的输出会改变。我的意思int co
是不做任何其他事情
解决方案
int nums[] = {};
此数组变量没有元素。这在 C++ 中是不允许的。该程序格式不正确。
std::cin >> nums[n2];
在这里,您可以访问其边界之外的空数组。程序的行为是未定义的。
我不知道为什么我的输出会改变。
这是因为程序的行为是未定义的。
推荐阅读
- google-apps-script - 在appsscript中创建logourl图片链接
- android - 如何更改带有滑动抽屉的 ActionBar 的颜色?
- mysql - 如何增加或减少另一个表的值?
- php - 安装 CakePHP 时,您的系统缺少请求的 PHP 扩展 intl
- multithreading - 线程在关联时停止,但不拥有,winform 被隐藏
- xml - 使用 XSD 检查 XML
- python-3.x - 通过所有方法安装opencv后无法安装和导入cv2
- python - 如何比较两个 Pandas DataFrame 并显示 DataFrame 2 中的差异
- bash - 使用 sed 删除日志中的日期
- solr - Solr云集群可以做增量备份吗?