我有下面的程序试图使用宏MIN5(A,B,C,D,E)取五个参数并返回最小值。但是,当我编译并运行该程序似乎没有返回最小值。C - 宏来计算5个参数的最小值
#include<stdio.h>
#include<stdlib.h>
#define MIN5(A,B,C,D,E) (((A) < (B)) ? (A) : ((B) < (C)) ? (B) : ((C) < (D)) ? (C) : ((D) < (E)) ? (D) : (E))
int main (void)
{
int A;
int B;
int C;
int D;
int E;
int z=MIN5(A,B,C,D,E);
printf("enter number 1: \n");
scanf("%i,&A");
printf("enter number 2: \n");
scanf("%i,&B");
printf("enter number 3: \n");
scanf("%i,&C");
printf("enter number 4: \n");
scanf("%i,&D");
printf("enter number 5: \n");
scanf("%i,&E");
printf("Minimum of five values is %i", z);
return 0;
}
有什么建议吗?
这不是很好。您正在使用未初始化的变量,然后将错误数量的参数提供给'scanf'。两者都是未定义的行为。 – chris 2013-04-06 19:16:21
此外,宏中的逻辑不好(假设你有'5,6,1,2,3' - 这将返回'5',对吧?) – 2013-04-06 19:17:18
你有没有听说过一个序列是什么?或者,你是否希望在感染之前就医治病人以帮助病人? – 2013-04-06 19:17:59