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

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

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

2020-01-26 16:12:58
字體:
來源:轉載
供稿:網友
在編寫代碼做測試時發現兩個大數相乘結果不正確的問題,測試代碼如下:
#include "stdafx.h"
#include<stdlib.h>
#include<time.h>
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<stdlib.h>
#include<time.h>
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也是錯的。
結論:
    在大數乘法時需要考慮乘積溢出問題。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延吉市| 井研县| 青河县| 化德县| 张北县| 越西县| 黑河市| 平山县| 安多县| 潞城市| 四平市| 重庆市| 龙口市| 老河口市| 陆川县| 固原市| 马尔康县| 洛南县| 卓尼县| 厦门市| 辰溪县| 桃园市| 定陶县| 旬邑县| 阿拉善右旗| 绥芬河市| 湘阴县| 林周县| 福海县| 久治县| 合川市| 栾川县| 宽城| 定边县| 铜川市| 永定县| 正镶白旗| 陇川县| 喀什市| 龙江县| 石城县|