isnan與宏定義來做一個可調整輸入參數的功能
#include <math.h>
#include <stdio.h>
double sum_(double in[])
{
double sum=0;
for( int i=0;!isnan(in[i]);i++)
sum+=in[i];
return sum;
}
#define sum(...) sum_((double[]){__VA_ARGS__,NAN})
int main(){
double SUM=sum(3,4);
printf("3+4=%g\n",SUM);
}
再翻以前不知道看哪本書的時候從書上整理下來的code
利用__VA_ARGS__ 讓輸入可以更有彈性
不過這個方法有個問題:
我在幾個IDE中build,都發現isnan在不是double型態的情況下讀到NAN也不會返回正確的值
此文章內容參考"21 century c"一書,在此做筆記
如須刪除請告知 謝謝