我创建了一个带有可变参数(NSIntegers)的 C 函数,如下所示:
NSInteger test(NSInteger arg, ...)
{
va_list args;
va_start(args, arg);
NSInteger arg2 = va_arg(args, NSInteger);
return arg + arg2;
}
在使用负秒值调用此函数时,它不知何故变成了一个非常大的数字。
test( 2, 2); // result = 4
test(-2, 2); // result = 0
test( 2, -2); // result = 4294967296
但是,如果我使用 int 而不是 NSInteger 作为可变参数,一切都会按预期工作。
NSInteger test2(NSInteger arg, ...)
{
va_list args;
va_start(args, arg);
int arg2 = va_arg(args, int);
return arg + arg2;
}
测试:
test2( 2, 2); // result = 4
test2(-2, 2); // result = 0
test2( 2, -2); // result = 0
我可能在这里遗漏了什么或做错了什么?如果有人能在这里指出我正确的方向,那就太好了。
谢谢!