循环超过条件
#include <stdio.h>
int multiple(int, int);
int main()
{
int i;
int x;
int y;
scanf("%d %d", &x, &y);
printf("%d", multiple(x,y));
}
int multiple(int N,int M)
{
int i;
int result;
for (i=0;i*M<N;i++)
{
result=i*M;
printf("%d", result);
}
}
当我把输入(例如x = 100和y = 7)输出显示所有倍数,直到105,直到98应该是。循环超过条件
循环并打印多达98但是,multiple
被声明为返回一个int
,但实际上并没有一个return
声明,因此,返回值是不确定的(并且在实践中你会得到从一些任意值以前的计算)。然后你打印这个“垃圾”返回值,并在你的情况下恰好是105.
如果你不想multiple
返回一个值,那么不要声明它返回一个值,并且不要打印它返回的值。
也许这可能是一个愚蠢的问题,但我如何打印“垃圾”返回? –
@FulvioDenza'printf(“%d”,multiple(x,y));'输出'multiple(x,y)'的返回值。这里的“垃圾”只是意味着没有任何意义的数据。 – immibis
非常感谢@immibis –
'main'和'multiple'都返回'int',但你没有返回任何值。确保您注意编译器警告。如果你使用GCC,至少应该使用'gcc -Wall -Werror'。 –
PS我犯了一个错误,也声明INT我不使用它 –