我试图传递一个长的类型作为函数的一个参数,并且失败。我可以将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
。