国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

深入剖析C++中兩個大數相乘的結果不正確

2020-02-24 14:34:29
字體:
來源:轉載
供稿:網友

在編寫代碼做測試時發現兩個大數相乘結果不正確的問題,今天武林技術小編就給各位深入剖析C++中兩個大數相乘的結果不正確,測試代碼如下:
#include "stdafx.h"
#include
#include
int _tmain(int argc, _TCHAR* argv[])
{?
??? time_t temp1=1345172428000000;
??? time_t temp2=1345172428*1000000;
?? ::system("pause");
??? return 0;
}
經過測試發現temp1與temp2并不相等。
但是修改為如下代碼:
#include "stdafx.h"
#include
#include
int _tmain(int argc, _TCHAR* argv[])
{
??? time_t temp1=1345172428000000;
??? time_t temp3=1345172428;
??? time_t temp4=1000000;
??? time_t temp2=temp3*temp4;
??? ::system("pause");
??? return 0;
}
經過測試發現temp1與temp2并相等。
分析原因:
??? 1345172428和1000000都是當做int型來處理的,他們相乘的結果也是當做int型,只是乘積會被強制轉換成time_t,但是在求乘積的時候就已經溢出了,所以在轉換成time_t也是錯的。
結論:
??? 在大數乘法時需要考慮乘積溢出問題。

以上就是深入剖析C++中兩個大數相乘的結果不正確的問題,如果大家想了解更多相關內容,請持續關注本站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐陵市| 苏尼特右旗| 大港区| 襄城县| 湖州市| 柏乡县| 堆龙德庆县| 石柱| 永安市| 星座| 云梦县| 南汇区| 安图县| 曲麻莱县| 宣汉县| 准格尔旗| 民勤县| 靖西县| 平乡县| 镇安县| 柯坪县| 罗江县| 颍上县| 毕节市| 五大连池市| 城口县| 浮山县| 石门县| 勐海县| 河池市| 松溪县| 济宁市| 建德市| 泊头市| 霸州市| 中方县| 治多县| 象山县| 高密市| 新邵县| 璧山县|