- 論壇徽章:
- 0
|
#include <stdio.h>
#include "stdlib.h"
#define va_list void*
#define va_arg(arg, type) *(type*)arg; arg = ((char*)arg + sizeof(type));
#define va_start(arg, start) arg = (void*)((char*)&(start)) + sizeof(start)
int sum(unsigned char nr, ...)
{
int i = 0;
int result = 0;
va_list arg = NULL;
va_start(arg, nr);
for(i = 0; i < nr; i++)
{
result += (int)va_arg(arg, unsigned char); //有貓膩
}
return (int)result;
}
int main(int argc, char* argv[])
{
printf("%d\n", sum(4, 100,100,100,100));
printf("%d\n", sum(3, 200, 200, 200));
return 0;
}
輸出的結果是錯誤的,但是把unsigned char換成int,又是正確的,上面加粗的字體換成int.
不知道是什么原因。
|
|