#include #include #include #include #include "utils.h" float constf = 0.8765f; double constd = 1.0; void test_vararg1 (int cnt, ... ); void test_vararg2 (int cnt, ... ); #define REPORT_INTERVAL 10000 int main(void) { volatile int *pReg = (int*)sys_led_port; int v1, v2; float curr, res; char buf[32]; // *pReg = 0xFF; /* printf("sizeof(char) = %d\n", sizeof(char)); printf("sizeof(short) = %d\n", sizeof(short)); printf("sizeof(int) = %d\n", sizeof(int)); printf("sizeof(long) = %d\n", sizeof(long)); printf("sizeof(long long) = %d\n", sizeof(long long)); printf("sizeof(float) = %d\n", sizeof(float)); printf("sizeof(double) = %d\n", sizeof(double)); */ v2 = 1; res = 0; while(1) { curr = 2.0f*(0.5f-(float)rand()/RAND_MAX); res += curr; v2++; if (!(v2%REPORT_INTERVAL)) { printf("%d = %f\n", v2, res/v2); } } return 0; } void test_vararg1 (int cnt, ... ) { int arg, i; va_list args; va_start(args, cnt); for (i=0; i < cnt; i++) { arg = va_arg(args, int); printf ("Arg[%d] = %d\n", i, arg); }; va_end(args); } void test_vararg2 (int cnt, ... ) { double arg; float f; int i, *t; va_list args; va_start(args, cnt); for (i=0; i < 2*cnt+2; i++) { arg = va_arg(args, double); f = (float)arg; t = (int*)&arg; // print_word(*t); printf ("Arg[%d] = %8.8X\n", i, *t); printf ("Arg[%d] = %f\n", i, arg); }; va_end(args); }