有3个数字:
unsigned int a;
unsigned int b;
unsigned int c;
它们的值是在程序执行期间设置的。然后你需要比较这些值\u200b\u200bin才能找到最小的,即:
// сравниваем числа
if (smallest == a) {
...
} else if (smallest == b) {
...
} else if (smallest == c) {
...
}
首先想到的是 if / else 包。但是即使是三个号码,这样的一串也会很长,不太方便。更糟糕的是 - 三个数字中的两个可以相等,这很不方便,特别是如果这是两个最小的数字。你能告诉我如何做这样一个简短而有能力的比较吗?如果你将它包装在一个函数中,那就更好了
int num_match() {
int smallest;
...
return smallest;
}
好的,假设您需要寻找至少三个。无论遇到什么阻碍,最好将其包装在一个函数(或宏,视情况而定)中。
我建议像这样声明函数
虽然这样写更好
现在可以用作
int m = min3i(1,2,5);
. 为什么我3i
在标题中添加?这是C,你不能有不同数量的参数和相同的名称的函数。如果你想要宏(好吧,因为不仅是int,还有float和其他东西比较,那么这里有一种方法(我们将改进来自@Harry的想法)
需要括号,因为否则可能会有奇迹,例如,有这样的表达
min3(a+b, b+c, 3)
(我希望我把它们说得够多了)。