va_start, va_arg练习

来源:互联网 发布:淘宝上的药店靠谱吗 编辑:程序博客网 时间:2024/05/19 23:17
#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 11int 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
0 0
原创粉丝点击