#include <stdarg.h>
#include <stdio.h>
void print(char *format, ...)
{
va_list ap;
va_start(ap,format);
//这里其实要做判断的
//#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
//_crt_va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
//#define va_arg _crt_va_arg
//va_arg &1111 1100,也就是说,其结果可能是 1-4(char), 4-4(int), 8-8(double)
int a = va_arg(ap, int);
char c = va_arg(ap, char);
char *str = va_arg(ap, char*);
va_end(ap);
printf("%d, %c, %s\n", a, c, str);
}
int main()
{
int a = 1;
char c = 'o';
char *str = "aaaaaabbbbcccddd";
print("%d, %c, %s", a, c, str);
int t1 = 4;//-char//-int 7//-double 11
int t2 = ~3;
printf("t1 %d, t2 %d\n", t1, t2);
printf("%d\n", t1 & t2);
return 0;
}
运行结果:
1, o, aaaaaabbbbcccddd
t1 4, t2 -4
4
t1 4, t2 -4
4