函数返回1而不是正确的值

时间:2012-09-29 15:02:28

标签: c function return

我的C函数返回值有问题。

我有一个主要功能,我以这种方式调用函数“send”;

int go_On;
go_On = send(VOTE_REQUEST, 1);

“发送”功能的组成如下:

int send(int msg, int flag) {

  // inizialization of some parameters;

  if (msg == VOTE_REQUEST) {

    // Do some operations...

    result = send(VOTE_COMMIT, 1);
  }
  else if (msg == VOTE_COMMIT) {

    // Do some other operations...

    return 10;
  }
}

其中VOTE_REQUEST和VOTE_COMMIT是在文件开头声明的常量。

问题是返回值go_On是1而不是10。 我认为问题出现在我自己调用“发送”功能的事实上。事实上,如果我把

return 10;
行前

result = send(VOTE_COMMIT, 1);

go_On假设正确的值10。 “发送”功能的调用本身就是问题的根源吗?如何解决它以使返回的值变为10?

感谢所有帮助我的人。

3 个答案:

答案 0 :(得分:3)

您需要从递归调用中返回值。 如果您向函数发送除VOTE_REQUESTVOTE_COMMIT之外的其他内容,则应返回错误值-1

int send(int msg, int flag) {

  // inizialization of some parameters;

  if (msg == VOTE_REQUEST) {

    // Do some operations...

    return send(VOTE_COMMIT, 1);
  }
  else if (msg == VOTE_COMMIT) {

    // Do some other operations...

    return 10;
  }

  return -1;
}

答案 1 :(得分:1)

问题似乎是你在函数的第一个分支中没有return语句。这是未定义的行为

也许你的意思是:

if (msg == VOTE_REQUEST)
{
    return send(VOTE_COMMIT, 1);
}
else if (msg == VOTE_COMMIT)
{
    return 10;
}

return -1;    // default

答案 2 :(得分:0)

在函数send()中,

时没有返回任何值
msg == VOTE_REQUEST...

尝试添加返回值...

int send(int msg, int param2)
{
    if(msg == VOTE_REQUEST)
        return send(VOTE_COMMIT, 1);
    else if(msg == VOTE_COMMIT)
        return 10;
    else
        return -1;
}