Ios 乘法不';我不能给出正确的答案

Ios 乘法不';我不能给出正确的答案,ios,objective-c,int,long-integer,multiplication,Ios,Objective C,Int,Long Integer,Multiplication,我在objective c应用程序中处理乘法。问题是,当我做一些乘法运算时,有时它会给我一个错误的结果: 例如: int intern = 77986; int secondNumber = 70654; long long int multiply = intern * secondNumber; NSLog(@"Intern : %i two : %i mult : %lli", intern, secondNumber, multiply); 结果是: 实习生:77986二:70

我在objective c应用程序中处理乘法。问题是,当我做一些乘法运算时,有时它会给我一个错误的结果:

例如:

int intern = 77986;
int secondNumber = 70654;
long long int multiply = intern * secondNumber;
NSLog(@"Intern : %i   two : %i   mult : %lli", intern, secondNumber, multiply);
结果是:

实习生:77986二:70654多人:121505548

结果将是5510022844


我不明白。。。谢谢你的帮助

这是一个简单的溢出问题。带有两个
int
变量的操作作为
int
完成。但是结果对于
int
来说太大了,所以它会溢出。然后溢出的结果被分配给
long int

将前两个
int
变量中的一个(或两个)转换为
long-long-int
将导致操作作为
long-long-int
执行,从而产生预期的正确结果

要澄清,您可以执行以下操作之一:

long long int intern = 77986;
// and the rest
或者:

long long int multiply = (long long int)intern * secondNumber;

这是一个简单的溢出问题。带有两个
int
变量的操作作为
int
完成。但是结果对于
int
来说太大了,所以它会溢出。然后溢出的结果被分配给
long int

将前两个
int
变量中的一个(或两个)转换为
long-long-int
将导致操作作为
long-long-int
执行,从而产生预期的正确结果

要澄清,您可以执行以下操作之一:

long long int intern = 77986;
// and the rest
或者:

long long int multiply = (long long int)intern * secondNumber;

这是一个简单的溢出问题。带有两个
int
变量的操作作为
int
完成。但是结果对于
int
来说太大了,所以它会溢出。然后溢出的结果被分配给
long int

将前两个
int
变量中的一个(或两个)转换为
long-long-int
将导致操作作为
long-long-int
执行,从而产生预期的正确结果

要澄清,您可以执行以下操作之一:

long long int intern = 77986;
// and the rest
或者:

long long int multiply = (long long int)intern * secondNumber;

这是一个简单的溢出问题。带有两个
int
变量的操作作为
int
完成。但是结果对于
int
来说太大了,所以它会溢出。然后溢出的结果被分配给
long int

将前两个
int
变量中的一个(或两个)转换为
long-long-int
将导致操作作为
long-long-int
执行,从而产生预期的正确结果

要澄清,您可以执行以下操作之一:

long long int intern = 77986;
// and the rest
或者:

long long int multiply = (long long int)intern * secondNumber;
由于您将整数相乘,因此结果是整数,并被截断为32位

由于您将整数相乘,因此结果是整数,并被截断为32位

由于您将整数相乘,因此结果是整数,并被截断为32位



因为你要乘以整数,结果就是整数,没有一些解释和上下文,答案几乎没有意义。没有一些解释和上下文,答案几乎没有意义。没有一些解释和上下文,答案几乎没有意义。没有一些解释和上下文,答案几乎没有意义。没有一些解释和上下文,答案几乎没有意义。有可能请把整数转换成长整数,好吗?当然可以。如果做不到的话,我也不会建议的。要么改变它的类型,要么使用cast.just,比如long long int tamp=(long long int)intern?这样你甚至不需要这个cast。编译器将自动执行转换。谢谢您的解释!可以把整数转换成长整数吗?当然可以。如果做不到的话,我也不会建议的。要么改变它的类型,要么使用cast.just,比如long long int tamp=(long long int)intern?这样你甚至不需要这个cast。编译器将自动执行转换。谢谢您的解释!可以把整数转换成长整数吗?当然可以。如果做不到的话,我也不会建议的。要么改变它的类型,要么使用cast.just,比如long long int tamp=(long long int)intern?这样你甚至不需要这个cast。编译器将自动执行转换。谢谢您的解释!可以把整数转换成长整数吗?当然可以。如果做不到的话,我也不会建议的。要么改变它的类型,要么使用cast.just,比如long long int tamp=(long long int)intern?这样你甚至不需要这个cast。编译器将自动执行转换。谢谢您的解释!