我试图传递一个长的类型作为函数的一个参数,并且失败。我可以将5000000000赋值给一个长变量,如下所示:

long long value = 5000000000;

但是当我试图把这个变量传递给一个方法时:
- (void)viewDidLoad
{
    [super viewDidLoad];

    long long value = 5000000000;

    [self test:value];
}

-(void) test:(long long)value
{
    printf("%d\n", value);
}

打印值为705032704,而不是5000000000。我在调试器中验证了这一点。705032704值是恒定的,所以似乎发生了某种截断。
我准备用这个把头发拔出来。有人能帮忙吗?
谢谢,
艾伦

最佳答案

printf试图将其打印为带符号的int,而不是long long。
长时间使用%lld

10-07 19:55
查看更多