夏天/isummer

Sun of my life !Talk is cheap, Show me the code! 追风赶月莫停留,平芜尽处是春山~

博客园 首页 新随笔 联系 管理

一些常用编程经验(持续补充)

1.因乘积因子过于太小,想成导致下溢问题或浮点数舍入导致错误

  由于大部分因子都非常小,所以程序会下溢出或者得到不正确答案。在代数中有ln(a*b) = ln(a) + ln(b),于是通过对数可以避免下溢出或者浮点数舍入导致的错误。同时,采用自然对数进行处理不会有任何损失。自然ln不会影响函数的单调性。

2.数组的不同声明方式,初始化的值不同

 1     int parray[10];//初始化时由不确定的值填充
 2     int *p_int = new int[10]();//初始化由0进行填充,即有类型type的默认值进行填充,int做累整形类使用,又是数值型,所以会用0进行填充
 3     int i;
 4     for (i = 0; i < 10; i++)
 5     {
 6         cout << parray[i] << "\t";
 7     }
 8     for (i = 0; i < 10; i++, p_int++)
 9     {
10         cout << *p_int << "\t";
11     }

  输出:

    -858993460 -858993460 -858993460 -858993460 -858993460
    -858993460 -858993460 -858993460 -858993460 -858993460
    0 0 0 0 0 0 0 0 0 0

 

posted on 2015-10-26 10:30  夏天/isummer  阅读(168)  评论(0编辑  收藏  举报