我有這樣的功課:「使用具有可變數量參數的函數從字符串(隱式值或來自KB)確定10個精度雙數的最小值。前7個值將被考慮最初,接下來是最後3點,最後是這2點。「那麼我做到了這一切,但我不知道爲什麼它給了我一些奇怪的結果。下面的代碼:C變量參數
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <conio.h>
double min(double,...);
void main(){
double a,b,c;
printf("Introduceti numerele: ");
scanf("%lf%lf%lf",&a,&b,&c);
printf("\nMinimul este %lf",min(10,1.34,4.34,7,5.23,6.23,2,8.232,a,b,c));
_getch();
}
double min(double x,...){
int i;
double y;
va_list ap;
va_start(ap,x);
y=va_arg(ap,double);
for(i=0;i<x;i++){
if(y>va_arg(ap,double))
y=va_arg(ap,double);
}
va_end(ap);
return y;
}
此外,我不知道爲什麼編譯器知道什麼論據是下一個,因爲我沒有在使用的va_arg(AP,雙)。
for(i=0;i<x;i++){
if(y>va_arg(ap,double))
y=va_arg(ap,double);
什麼是奇怪的結果(除了唐納德特朗普離開理髮師時)? –
'_getch'和'conio'不是標準的。 – Olaf
嗯,我得到這樣的:-93453434343 –