**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3小时前关门了。
截至3小时前,社区正在审查是否重新讨论此问题。
Improve this question
#include <iostream>
using namespace std;
void rest(int x, int y, int n, int& k)
{
for(int k = n; k > 0; k--)
{
if(k % x == 2 && k % y == 2)
{
break;
}
}
}
int main()
{
int x, y, n, nru;
cin >> x >> y >> n;
rest(x, y, n, nru);
cout << "show the number " << nru;
return 0;
}
这个程序应该输出小于n的最大数,并且哪个模式x和y给出结果2。为什么我的输出是0,而它应该是2022?
1条答案
按热度按时间ccgok5k51#
for(int k=n; ...
隐藏了引用参数的定义,但声明了一个新变量,该变量仅在循环体可见。因此,在循环中迭代时,您不会更改参数
k
。循环应该是
for(k=n; ...
由于
nru
在作为参数传递给函数之前从未初始化,因此在函数调用之后它仍然未初始化,并且在之后访问它是 * 未定义的行为 *。没有保证的输出。如果你打开了所有编译器的警告级别(例如,使用g++的
-Wall -Wextra
),很可能会向你报告变量隐藏或至少缺少初始化:g++ demo at coliru