我有下面的程序試圖使用宏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