90 lines
1.5 KiB
C
90 lines
1.5 KiB
C
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
#include <math.h>
|
|
#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);
|
|
|
|
}
|