【问题标题】:Loop for over the condition循环遍历条件
【发布时间】:2016-11-11 00:37:38
【问题描述】:
#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。

【问题讨论】:

  • mainmultiple 都返回 int 但你没有返回任何值。确保您注意编译器警告。如果您使用 GCC,请始终至少使用 gcc -Wall -Werror
  • PS 我犯了一个错误,也声明了 int i 而没有使用它

标签: c loops for-loop output


【解决方案1】:

循环确实打印到 98。但是,multiple 被声明返回一个 int 但实际上并没有 return 语句,所以返回值是未指定的(实际上你会得到来自先前计算的任意值)。然后你打印这个“垃圾”返回值,在你的例子中它恰好是 105。

如果您不希望multiple 返回值,则不要声明它返回值,也不要打印它返回的值。

【讨论】:

  • 也许这可能是一个愚蠢的问题,但我如何打印“垃圾”返回?
  • @FulvioDenza printf("%d", multiple(x,y)); 打印multiple(x,y) 的返回值。这里的“垃圾”只是指没有任何意义的数据。
  • 非常感谢@immibis
猜你喜欢
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
相关资源
最近更新 更多