c++ - 指针、C++...代码不工作

标签 c++

这是问题: 编写具有五个参数的函数 minMax 的定义。前三个参数是整数。最后两个由函数设置为前三个参数值中的最大值和最小值。该函数不返回值。

函数可以按如下方式使用:

int a = 31, b = 5, c = 19, big, small; 
minMax(a, b, c, &big, &small); /* big is now 31; small is now 5 */ 

这是我的代码:

void minMax(int x, int y, int z, int* big, int* small)
{
  if (x < y && x < z)

    *small = x;

  else if (y < x && y < z)

    *small = y;

  else if (z < x && z < y)

    *small = z;

  if (x > y && x > z)

    *big = x;

    else if (y > x && y > z)

    *big = y;

  else if (z > x && z > y)

    *big = z;
  }

这是我遇到的错误:

您的函数没有更改small 的值。确保在函数中取消引用它。

不确定哪里出了问题?

谢谢。

最佳答案

我看到一个紧迫问题。

当你传递数字1时,你认为会发生什么? , 17

也许您可能需要考虑使用 <=>=而不仅仅是 <> .

由于该错误消息看起来与我之前看到的任何编译器错误都不一样(并且代码在语法上是有效的),我建议该消息来自测试工具,它可能:

  • 设置big/small值转换为传入的数字以外的数字(例如 -9999 )。
  • 使用测试数据调用函数(例如,1,1,7)。
  • 检查输出变量以确保它们已更改为正确的值。

此外,它不是世界上最可读 的代码(无意冒犯)。如果您能够以一种一目了然的方式构建您的代码(包括适当的评论),您将有成群结队的 future 程序员赞美您并崇拜您的名字:-)

像这样的东西比很多那些 else if 更清楚地表明了意图(IMNSHO)构造:

// Populate big/small based on max/min of x, y and z.

void minMax (int x, int y, int z, int *big, int *small) {
    // Set by default to x, only change if others are bigger.

    *big = x;
     if (y > *big)   *big = y;
     if (z > *big)   *big = z;

    // Same for small but with reversed comparisons.

    *small = x;
     if (y < *small) *small = y;
     if (z < *small) *small = z;
}

关于c++ - 指针、C++...代码不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831533/

相关文章:

c++ - 在 C++ 中重载运算符 <

C++ 如何限制一次输入一个字符?

c++ - 在 C++ 中查找小于特定整数值的最接近浮点值?

c++ - Atlbase 将无法正确包含在虚幻引擎 4 中

c++ - boost::lambda::bind 表达式是否会阻止内联/是否有其他形式不会?

c++ - 如何测试可简单复制的可分配 lambda

c++ - 在 QString 中连接 STL string+int+int+int

c++ - 为非托管 C++ 客户端创建 WCF 服务

c++ - 使用运算符 == 和 != 比较 C++ 中的不同类

c++ - 可测试的无效浮点值。 (浮点 NULL)