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

 

相关文章:

  • 2021-11-28
  • 2021-09-15
  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-15
猜你喜欢
  • 2021-06-28
  • 2021-11-30
  • 2021-12-13
  • 2021-09-22
  • 2021-07-31
  • 2021-10-27
  • 2021-05-25
相关资源
相似解决方案