C语言两个int型数据相乘,结果类型会默认变成long long int?
inta=1920;intb=1080;intc=2000*(a*b)/(1920*1080);c变量这样赋值对吗????(a*b)会不会被系统默认转换成longlong...
int a = 1920;
int b = 1080;
int c = 2000 * (a*b)/(1920*1080);
c 变量这样赋值对吗???? (a*b)会不会被系统默认转换成 long long int?? 展开
int b = 1080;
int c = 2000 * (a*b)/(1920*1080);
c 变量这样赋值对吗???? (a*b)会不会被系统默认转换成 long long int?? 展开
2个回答
展开全部
最好不要这样用int,容易出错,可以先返回a*b,再赋值之后进行c的赋值
运行结果
源码:
#include <stdio.h>
int multiply( int a ,int b)
{
return (a*b);
}
int main()
{
int x, y, product,c;
printf("please input two integers:");
scanf("%d%d",&x, &y);
product=multiply(x,y);
printf("The product is %d\n", product);
c=2000*product/(1920*1080);
printf("c=%d\n",c);
return 0;
}
追问
出错的原因是什么呢?我在代码中发现这样的BUG,但不知道为什么,是不是int之间的乘法运算隐式转换成了long long int ,再赋值给int后数据丢失??
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询