c语言 判断两数相乘是不是溢出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 判断两数相乘是不是溢出相关的知识,希望对你有一定的参考价值。

代码是:(int 为32位,使用longlong 64位精度判断)
int tmult_ok(int x,int y)
{long long pll=(long long)x*y;
return pll==(int)pll;}
(有些地方看不懂,1.x不是被强制转化成64位的么,64位能和32位的相乘?2.最好举个例子结合代码讲解一下)
那pll==(int)pll怎么解释?pll直接截成32位再和原来的64位比有什么意义?

当要发生类型转换时,如果是像更高精度的类型转换,编译器会进行隐式的转换,也就是说,你用64位的X去和32位的Y相乘,编译器就会隐式的把Y转换成64位的,因为精度更高,并不会发生数据丢失,所以不会有任何错误报告 参考技术A 隐式转换,不足补零,从32为转换64位不会产生数据丢失,从高位转向低位,注意数据丢失。

以上是关于c语言 判断两数相乘是不是溢出的主要内容,如果未能解决你的问题,请参考以下文章

C语言2个数相乘

[C语言]从键盘上输入两个整数num1和num2,判断两数之和与两数乘积的大小关系?

1. 用C语言写一段程序:从键盘上输入两数,判断其大小关系,将判断结果显示在屏幕上。

C语言 不用循环和函数求 X的Y次方

用c语言设计一个程序判断一个5×5矩阵是不是为对称矩阵。谢谢!!!

怎样用c语言编程 -求两个小数乘积